2010-08-14 76 views
3

我知道模板類的普通成員函數會在第一次使用時被實例化。但是這不能用於虛擬成員函數,因爲它可以通過基類指針訪問。這意味着一旦tmeplate類被實例化,虛擬成員函數就會被實例化?如果不是當?當模板類的虛擬成員函數實例化了嗎?

回答

5

14.7.1/9 C++ 03:

一種實現不應隱含地實例化一個函數模板,一個構件模板,非虛擬成員函數,一個部件類或類模板的靜態數據成員這不需要實例化。如果虛擬成員函數不會被實例化,則沒有指定實現是否隱式地實例化類模板的虛擬成員函數。

1

它是實現定義的。

但通常當實例化一個模板類時,將生成新類類型的所有成員。

1

根據C++標準14.6.4.1/4:

如果虛擬函數是隱式 實例化,其 實例化點緊跟 其 包圍類的實例化點模板 專業化。

+0

他想知道函數是否被實例化。不在實例化的地方。 – 2010-08-14 15:47:23

相關問題