클래스의 메소드가 인라인 될 확률을 생각할 때 Vector 클래스 (수학적 의미로는 std::vector
의미가 아닙니다)를 작성했습니다. 함수 정의 방법에 따라 다릅니다.함수가 C++에서 정의 된 위치에 따라 인라인 될 가능성
나는 다음과 같은 경우에 관심이 :
사례 1이, 함수 본문은 헤더 파일에 선언의 장소에서 정의된다. 예 :
// Vector.h
class Vector
{
public:
// Other stuff up here
float Magnitude(void) const
{
return sqrt(X*X + Y*Y);
}
// Other stuff down here
}
사례 2이 함수 본문 초기 클래스 정의 후의 헤더 파일에 정의되어있다. 예 :
// Vector.h
class Vector
{
public:
// Other stuff up here
float Magnitude(void) const;
// Other stuff down here
}
// Other stuff up here
float Vector::Magnitude(void) const
{
return sqrt(X*X + Y*Y);
}
// Other stuff down here
사례 3은 함수 바디 선언 및 정의 별도두고 대응 .cpp
파일에서 제공된다. 예 :
// Vector.h
class Vector
{
public:
// Other stuff up here
float Magnitude(void) const;
// Other stuff down here
}
//Vector.cpp
#include "Vector.h"
// Other stuff up here
float Vector::Magnitude(void) const
{
return sqrt(X*X + Y*Y);
}
// Other stuff down here
케이스 4는, 함수 정의 컴파일러 입력으로 제공된 대응 .lib
파일에서 제공된다.
사례 5의 경우 함수 정의는 연결된 .dll
파일에 제공됩니다.
이 5 가지 경우 각각에서 함수가 인라인 될 확률은 얼마입니까? 정확한 확률을 의미하지는 않습니다. 서로 비교하면 인라인 될 확률이 높고 가능성이 적습니다.
기타 정보 :
내가 의도적으로 너무 넓은되지 않도록 문제를 단순화하기 위해 inline
키워드를 무시하고있다. 나는 인라이닝을 다루는 다른 많은 질문이 있다는 것을 알고 있지만,이 질문에 특히 대처하기 위해 각 사례에 대한 충분한 정보를 찾지 못했습니다. 또한 미리 만들어진 벡터 클래스가있는 라이브러리가 이미 있다는 것을 알고 있습니다. 이는 연습의 요점이 아닙니다.