C++模板类的虚函数成员
生活随笔
收集整理的這篇文章主要介紹了
C++模板类的虚函数成员
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
C++模板類只有在被使用的時候才會被特化,同樣其成員函數也是在被使用的時候才被實例化。但是虛函數成員例外,原因應該是在定義一個模板類類型的變量時(使用模板類),為了確定虛函數表的大小,就已經實例化了虛函數成員。(個人理解,有錯見諒)
有關虛函數表:
關于虛函數,其主要目的是為了實現多態,也就是用基類的指針來調用其派生類的函數。所以在派生類的地址前段會存在虛成員函數地址,這個位置被稱為虛函數表。
另外,當實例化其派生類的時候,如果派生類沒有覆蓋掉基類的虛函數,那么派生類的虛函數表中虛函數的地址就是基類虛函數的地址。
如果派生類覆蓋了基類的虛函數,虛函數表中被覆蓋的那些虛函數的地址將被替換成派生類對應函數的地址,即不再是基類虛函數的地址。
這樣當用基類指針調用派生類的虛函數時,就可以直接訪問派生類地址前端的虛函數表,根據函數地址來調用虛函數,從而實現了基類指針調用派生類函數的功能,也就是多態。
總結
以上是生活随笔為你收集整理的C++模板类的虚函数成员的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 学习笔记-----C++模板类中友元函数
- 下一篇: C++类成员函数在.cpp中设置成inl