亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

內聯虛擬功能真的沒有意義嗎?

內聯虛擬功能真的沒有意義嗎?

C++ C
一只名叫tom的貓 2019-07-24 09:53:45
內聯虛擬功能真的沒有意義嗎?當我收到代碼評論評論說虛擬功能不需要內聯時,我收到了這個問題。我認為在直接在對象上調用函數的場景中,內聯虛函數可以派上用場。但是我想到的反駁論點是 - 為什么要想定義虛擬然后使用對象來調用方法呢?最好不要使用內聯虛擬功能,因為它們幾乎從未擴展過嗎?我用于分析的代碼片段: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 回答

?
收到一只叮咚

TA貢獻1821條經驗 獲得超5個贊

有時可以內聯虛函數。優秀的C ++ faq的摘錄:

“內聯虛擬調用唯一可以內聯的是編譯器知道作為虛函數調用目標的對象的”確切類“。這只有在編譯器具有實際對象而不是指針時才會發生。引用一個對象。即,使用本地對象,全局/靜態對象或復合內部的完全包含的對象。“


查看完整回答
反對 回復 2019-07-24
  • 3 回答
  • 0 關注
  • 410 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號