[問題] 關於inline的問題......
我了解尚未綁定的virtual函數無法被inline
但是中文版的 Effective C++ 條款30中有一句話
"所有對virtual函数的调用也都會使inline落空"
卻讓我有點搞糊塗了
難道說類似這樣的程式碼不能被inline嗎?
class Base {
public:
void inline_func() {
++counter_;
virtual_func();
} //can not be inlined??!
private:
int counter_;
virtual void virtual_func() = 0;
};
雖然inline_func()當中呼叫了virtual函數
但是編譯器要將對 inline_func() 的呼叫直接置換為
{++counter_; virtual_func();} 應該不會有困難才對吧?
畢竟編譯期尚未決定的應該是 "virtual_func()到底指向哪個函數" 這件事
而不是 "我想要呼叫virtual_func()" 的這個動作不是嗎?
還是說我把這句話的文意理解錯了......XD
======================================
另外一個小小的問題是
如果我這樣寫:
int a;
inline int &reference_of_a() {return a;}
那麼這兩行:
a = 100;
reference_of_a() = 100;
編譯過後就會是完全一樣的嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 180.176.10.104
→
01/16 04:53, , 1F
01/16 04:53, 1F
→
01/16 04:54, , 2F
01/16 04:54, 2F
→
01/16 08:51, , 3F
01/16 08:51, 3F
→
01/16 09:47, , 4F
01/16 09:47, 4F
→
01/16 10:32, , 5F
01/16 10:32, 5F
→
01/16 10:34, , 6F
01/16 10:34, 6F
推
01/16 17:28, , 7F
01/16 17:28, 7F
→
01/16 17:29, , 8F
01/16 17:29, 8F
→
01/16 17:29, , 9F
01/16 17:29, 9F
→
01/16 17:29, , 10F
01/16 17:29, 10F
→
01/16 17:30, , 11F
01/16 17:30, 11F
→
01/16 17:41, , 12F
01/16 17:41, 12F
→
01/16 17:42, , 13F
01/16 17:42, 13F
→
01/16 17:43, , 14F
01/16 17:43, 14F
→
01/16 17:46, , 15F
01/16 17:46, 15F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章