>  기사  >  백엔드 개발  >  .cpp 파일에서 인라인 멤버 함수를 정의하고 여전히 인라인을 얻을 수 있습니까?

.cpp 파일에서 인라인 멤버 함수를 정의하고 여전히 인라인을 얻을 수 있습니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-10-28 17:34:30311검색

 Can I Define Inline Member Functions in a .cpp File and Still Get Inlining?

.cpp 파일의 인라인 멤버 함수 정의

C에서 인라인 멤버 함수는 이상적으로 헤더 파일 내에 정의되어 컴파일러가 컴파일하는 동안 인라인합니다. 그러나 클래스 간의 순환 종속성과 같은 특정 상황에서는 구현을 헤더 외부에 배치해야 할 수도 있습니다.

주어진 예에서 클래스 A에는 클래스 B가 포함되어 있으며 클래스 B에는 A의 전방 선언이 포함되어 있습니다. 이러한 순환성을 위해 클래스 B의 getA() 함수는 B.cpp에 정의되어 있습니다. 이는 다음과 같은 질문을 제기합니다: 컴파일러는 여전히 getA()를 인라인할 것이며, 그렇다면 어떤 정의가 우선합니까?

C FAQ에 따라 인라인 함수의 정의는 이에 대한 헤더 파일에 배치되어야 합니다. 이를 사용하는 모든 소스 파일에 표시됩니다. 따라서 이 시나리오에서 컴파일러는 B.cpp 자체 내에서 호출되는 경우를 제외하고 getA()를 인라인하지 않습니다.

모범 사례에 따르면 inline 키워드는 클래스 외부의 함수 정의에서 한 번만 사용해야 합니다. 몸. 따라서 헤더 파일에 있는 모든 인라인 키워드는 중복됩니다.

안타깝게도 컴파일러에서 인라인 처리를 보장하면서 .cpp 파일에 인라인 멤버 함수를 정의하는 알려진 방법은 없습니다.

위 내용은 .cpp 파일에서 인라인 멤버 함수를 정의하고 여전히 인라인을 얻을 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.