2014-02-27 5 views
0

내 수학 함수를 그룹화하려고합니다. 내 수학 함수에는 "math.h"의 함수와 일부 상수 값을 비롯한 많은 수학 함수가 포함됩니다. 클래스 또는 네임 스페이스에 없습니다. 성능상의 이유로 인하여 모두 인라인됩니다. 하지만 네임 스페이스가 아닌 클래스에 클래스를 그룹화하려고합니다. 난 그냥이 같은 내 기능을 사용하려면 :클래스의 정적 인라인 함수

MyMath::Pow(2, 2); 
MayMath::PI; 

그래서 내 질문은; 클래스를 사용할 수 있다면 함수와 값은 정적이어야합니다.하지만 정적 메서드는 내가 알고 있기 때문에 인라인 될 수 없다고 생각합니다. 솔루션을 찾을 수 없다면 "MyMath"를 네임 스페이스로 사용할 수 있습니다.

+0

클래스 정의 내에서 정의 할 때 정적 메서드를 인라인 할 수없는 이유는 무엇입니까? – Medinoc

+0

static 수정자는 다른 수정자를 허용하지 않는다는 것을 알고 있습니다. 내가 잘못? –

+2

네임 스페이스 사용에 대한 귀하의 추론은 무엇입니까? – Nabla

답변

3

XY Problem처럼 들립니다.

클래스 내에 속하지 않는 독립 실행 형 함수를 넣으려고합니다. 아마도 독립 실행 형 함수를 작성할 수없는 다른 객체 지향 언어에서 왔기 때문입니다.

pow, exp, log 등과 같은 기능을 포함하는 수학 라이브러리를 작성하려면 MyMath 네임 스페이스를 만들고 함수를 정의하십시오. 수업은 필요 없습니다.

+0

"아마도 독립 실행 형 함수를 작성할 수없는 다른 객체 지향 언어에서 왔기 때문에"그렇습니다. –

+0

Btw 생각하지 않지만 네임 스페이스 복잡성에 대한 성능 손실이 있습니다. n1 :: foo()와 n1 :: n2 :: n3 :: foo() 사이에? –

+1

@ CahitBurakKüçüksütcü 입력해야하는 금액입니다. –

1

but static methods can not be inlined since I know

정적 인 방법은 또한 인라인 일 수 있습니다.

2

정적 함수/메소드도 인라인 일 수 있습니다.

클래스 내에 정의 된 메소드는 기본적으로 인라인입니다.

1

정적 함수는 다른 모든 함수와 동일하게 인라인 될 수 있습니다. 그러나 사용 사례 네임 스페이스가 더 나은 솔루션입니다.

0

static inline은 완전히 유효합니다.

저장 클래스가 extern 인 경우 식별자는 외부 연결을 가지며 인라인 정의는 외부 정의도 제공합니다.

저장소 클래스가 정적 인 경우 식별자는 내부 링크가 있고 다른 번역 단위에서는 인라인 정의가 보이지 않습니다.

static과 다른 저장소 클래스가있는 inline을 사용하는 경우는 거의 없습니다.