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