国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

c++ 構(gòu)造函數(shù)中調(diào)用虛函數(shù)的實現(xiàn)方法

2020-01-26 14:21:20
字體:
供稿:網(wǎng)友

我們知道:C++中的多態(tài)使得可以根據(jù)對象的真實類型(動態(tài)類型)調(diào)用不同的虛函數(shù)。這種調(diào)用都是對象已經(jīng)構(gòu)建完成的情況。那如果在構(gòu)造函數(shù)中調(diào)用虛函數(shù),會怎么樣呢?

有這么一段代碼:

class A{public:  A ():m_iVal(0){test();}  virtual void func() { std::cout<<m_iVal<<‘ ';}  void test(){func();}public:int m_iVal;};class B : public A{public:  B(){test();};  virtual void func()  {    ++m_iVal;    std::cout<<m_iVal<<‘ ';}};int main(int argc ,char* argv[]){  A*p = new B;  p->test();  return 0;}

輸出: 0 1 2

也就是說,在構(gòu)造函數(shù)中調(diào)用虛函數(shù),調(diào)用的是正在構(gòu)造的類中的虛函數(shù),而不是子類的虛函數(shù)。

理一下程序。new了一個B對象,首先要調(diào)用基類構(gòu)造函數(shù),也就是A類的構(gòu)造函數(shù)。調(diào)用test(),再調(diào)用虛函數(shù)func(),這時候用的是基類版本。之后再調(diào)用子類B的構(gòu)造函數(shù),這時調(diào)用的是子類虛函數(shù)func()。至于最后一次調(diào)用func(),根據(jù)多態(tài),調(diào)用的是真實虛函數(shù)。

以上就是小編為大家?guī)淼腸++ 構(gòu)造函數(shù)中調(diào)用虛函數(shù)的實現(xiàn)方法全部內(nèi)容了,希望大家多多支持武林網(wǎng)~

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 胶州市| 凤山市| 乌拉特前旗| 潮安县| 彭泽县| 怀安县| 加查县| 肃南| 无为县| 丰都县| 鄢陵县| 庄河市| 金山区| 永靖县| 博爱县| 陕西省| 紫金县| 屏边| 连南| 夏津县| 岐山县| 石嘴山市| 潼关县| 洛宁县| 宿松县| 留坝县| 伊春市| 莒南县| 五莲县| 平潭县| 宾川县| 大悟县| 新民市| 丹寨县| 柳河县| 西峡县| 黄石市| 汝阳县| 枣庄市| 鸡泽县| 秦安县|