나는 종종 간단한 메소드가 구현 파일에서 별도로가 아니라 헤더 파일의 클래스 본문에 정의되는 C++에서 대형 비 템플릿 클래스를 실행합니다. 예 :C++ 메소드가 클래스 내부에서 정의되는 경우가있는 이유는 무엇입니까?
class Foo {
int getBar() const { return bar; }
...
};
왜 이렇게할까요? 단점이있는 것 같습니다. 클래스의 헤더 파일이 많은 다른 장소에 포함되어 있으면 컴파일러가 부담을 느끼게됩니다.
내 생각에 사람들은이 기능을 다른 모듈에 인라인 할 의도가있어서 성능을 크게 향상시킬 수 있다고 생각합니다. 그러나 최신 컴파일러가 모듈 간 링크 타임에 인라인 (및 기타 프로 시저 간 최적화)을 수행 할 수 있다고 들었습니다. 이러한 종류의 링크 시간 최적화에 대한 지원은 얼마나 광범위합니까? 실제로 이런 종류의 정의가 불필요합니다. 이 정의에 대한 다른 좋은 이유가 있습니까?
그렇습니다. 그러나 "기본적으로 인라인"은 컴파일러가 인라인 할 것이라는 의미는 아니며 "인라인"키워드가 실제로 실제로 * 힌트 *를 추가하지 않아도된다는 것을 의미합니다. –