內(nèi)聯(lián)虛擬功能真的沒有意義嗎?當(dāng)我收到代碼評論評論說虛擬功能不需要內(nèi)聯(lián)時(shí),我收到了這個(gè)問題。我認(rèn)為在直接在對象上調(diào)用函數(shù)的場景中,內(nèi)聯(lián)虛函數(shù)可以派上用場。但是我想到的反駁論點(diǎn)是 - 為什么要想定義虛擬然后使用對象來調(diào)用方法呢?最好不要使用內(nèi)聯(lián)虛擬功能,因?yàn)樗鼈儙缀鯊奈磾U(kuò)展過嗎?我用于分析的代碼片段:class Temp{public:
virtual ~Temp()
{
}
virtual void myVirtualFunction() const
{
cout<<"Temp::myVirtualFunction"<<endl;
}};class TempDerived : public Temp{public:
void myVirtualFunction() const
{
cout<<"TempDerived::myVirtualFunction"<<endl;
}};int main(void) {
TempDerived aDerivedObj;
//Compiler thinks it's safe to expand the virtual functions
aDerivedObj.myVirtualFunction();
//type of object Temp points to is always known;
//does compiler still expand virtual functions?
//I doubt compiler would be this much intelligent!
Temp* pTemp = &aDerivedObj;
pTemp->myVirtualFunction();
return 0;}
- 3 回答
- 0 關(guān)注
- 444 瀏覽
添加回答
舉報(bào)
0/150
提交
取消