2012-02-11 3 views
13

저는 정적 인 멤버 함수를 가지고 있습니다. 그것은 정적 인 멤버 함수를 가지고 있습니다.이 멤버 함수는 저의 구문 적 설탕이며, 매개 변수를 매개 변수에 전달하는 대신에 그 몸체가 나타나기를 원합니다.정적 멤버 함수를 인라인 할 수 있습니까?

inline static foo(int a) {return a & 0x00000040;} 

은 그것이 static을하지 않고 inline 인 경우와 마찬가지로 인라인 될 것인가?

+1

인라이닝과 마찬가지로 대답은 "의존적"입니다. 어딘가에'foo'에 함수 포인터를 넘기고 싶다면? –

답변

13

컴파일러는 수행 할 작업을 선택하여 수행 할 작업을 선택할 수 없습니다. 즉, static 인 함수는 인라인되지 못하도록하지 않습니다. static 함수는 기본적으로 클래스의 private 멤버에 대한 다른 명명 스타일 및 액세스 권한을 가진 자유 함수입니다.

+0

그들은 한 가지 중요한 점에서 무료 기능과 다릅니다 : 개인 회원에 대한 액세스 – John

+0

@ 존 아 그렇습니다, 그것은 중요한 차이입니다. –

+0

클래스 내부의 정의가 어쨌든 인라인 요청을 의미하지는 않습니까? –

0

정적 멤버 메서드에는 this 매개 변수가 없으므로 정적 멤버 변수에만 액세스 할 수 있습니다.

메서드가 인라인되었는지 여부와는 다릅니다. 그래서 두 사람은 서로 독립적입니다.

컴파일러는 메소드가 인라인 될 것인지 여부를 결정합니다. 키워드를 사용하는 것은 컴파일러에게 힌트 일뿐입니다.

관련 문제