여기 상황이 있습니다. 몇 가지 보호 된 데이터 멤버 및 몇 가지 공용 getter 함수 (한 줄 본문) 헤더 파일에서 선언 된 기본 클래스가 있습니다. 가상 메소드가 없습니다. 서브 클래스는 이것으로부터 파생 해, 그 정의가 대응하는 cpp 파일에 배치되는 그 자신의 생성자을 정의합니다.기본 클래스 본문 내부에서 선언되었지만 파생 클래스를 통해 호출되는 함수의 인라이닝
파생 클래스의 객체를 통해 getter 함수를 호출하는 것이 인라인됩니까?
편집 : 내 코드는 다음과 같습니다. 클래스 Quadrature2D
의 객체에 의해 호출 될 때
// quad.h
class QuadratureRule {
protected:
int ngauss;
Array points;
Array weights;
public:
QuadratureRule(int ng) : ngauss(ng) { }
double getweights(int ig) const {
return weights[ig];
}
};
class Quadrature2D : public QuadratureRule {
public:
Quadrature2D(int ng);
};
그리고
//quad.cpp
#include "quad.h"
Quadrature2D::Quadrature2D(int ng) : QuadratureRule(ng) {
// initialize arrays in a certain way
}
나는 인라인
getweights
를 원한다. 또한 GCC g ++ 5.4 및 6.3을 사용하고 있습니다.
질문이 명확 할 수도 있지만 코드는 볼륨을 말해줍니다. 코드 데모를 제공 할 수 있습니까? – WhiZTiM
아마도 그렇습니다. 확실한 유일한 방법은 생성 된 코드를 검사하는 것입니다. (C++이 함수 인라이닝을 필요로하는 경우는 없으며, 구현에 달려 있습니다.) – molbdnilo
코드를 인라인해서는 안되는 이유는 없습니다.이 점에있어서 여러분의 상황은 다른 함수에 비해 특별한 것이 아닙니다. 그러나 그럼에도 불구하고 함수가 인라인 될 것이라는 보장은 없습니다. 조립품을 확인하십시오. – overseas