1
以下是情況。我在頭文件中聲明瞭一個基類,其中包含一些受保護的數據成員和一些公共getter函數(單行主體)。沒有虛擬方法。一個子類是從它派生出來的,並定義了它自己的構造函數,其定義放置在相應的cpp文件中。內聯基類內部聲明但通過派生類調用的函數
將內聯的派生類的對象調用到getter函數?
編輯:這是我的代碼。
// 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
內聯時Quadrature2D
類的對象調用。 另外,我正在使用GCC g ++ 5.4和6.3。
雖然您的問題可能很清楚,但代碼可以說明數量。你能提供代碼演示嗎? – WhiZTiM
很可能,是的。唯一確定的方法是檢查生成的代碼。 (不存在C++需要函數內聯的情況;取決於實現。) – molbdnilo
沒有理由不內聯你的代碼,在這方面,與其他函數相比,你的情況沒有什麼特別之處。但是,不能保證函數會被內聯。只要檢查你的程序集就可以了。 – overseas