我知道模板類的普通成員函數會在第一次使用時被實例化。但是這不能用於虛擬成員函數,因爲它可以通過基類指針訪問。這意味着一旦tmeplate類被實例化,虛擬成員函數就會被實例化?如果不是當?當模板類的虛擬成員函數實例化了嗎?
3
A
回答
5
在14.7.1/9
C++ 03:
一種實現不應隱含地實例化一個函數模板,一個構件模板,非虛擬成員函數,一個部件類或類模板的靜態數據成員這不需要實例化。如果虛擬成員函數不會被實例化,則沒有指定實現是否隱式地實例化類模板的虛擬成員函數。
1
它是實現定義的。
但通常當實例化一個模板類時,將生成新類類型的所有成員。
1
根據C++標準14.6.4.1/4:
如果虛擬函數是隱式 實例化,其 實例化點緊跟 其 包圍類的實例化點模板 專業化。
相關問題
- 1. 實例化類模板的可變成員函數模板
- 2. 實例化模板成員函數
- 3. 模板成員函數只實例化
- 4. 使用成員模板函數顯式模板實例化
- 5. 模板類成員函數專業化?
- 6. 模板成員函數中的模板化參數類型
- 7. 成員函數的typedef可以用helper模板類簡化嗎?
- 8. 當一個類模板被實例化時,成員模板聲明是否也被實例化?
- 9. 類和成員函數模板專業化出錯了
- 10. 模板函數的特化可以是虛擬的嗎?
- 11. 什麼時候模板類的特殊成員函數被實例化?
- 12. 使用模板類的成員在MSVC++中實例化模板默認參數
- 13. 模板類和成員函數的部分模板專業化
- 14. 如何規避虛擬模板成員函數?
- 15. 如何設計模板化成員函數不能虛擬的限制
- 16. 訪問模板類型實例成員
- 17. C++實例化函數模板作爲類成員並使用「this」指針
- 18. 我如何實例化成員函數指針類爲模板ARG
- 19. 如何在模板類中專門化模板成員函數?
- 20. 成員函數的模板專門化
- 21. C++不同類型的模板類的顯式模板化函數實例化
- 22. 類模板可以在沒有成員的情況下實例化嗎?
- 23. 虛擬成員函數定義能否出現在類模板之外?
- 24. 模板類中的純虛擬模板函數
- 25. 如何專門化模板化類的成員函數?
- 26. (Obj)C++:從模板實例化(引用)類,訪問其成員?
- 27. 具有模板成員函數的類,是同一個類嗎?
- 28. 帶有虛擬成員的模板類:鏈接器錯誤
- 29. 虛擬對類模板成員使用的影響
- 30. 類變通方法的虛擬模板成員
他想知道函數是否被實例化。不在實例化的地方。 – 2010-08-14 15:47:23