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

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

c++ 構造函數中調用虛函數的實現方法

2020-05-23 13:57:32
字體:
來源:轉載
供稿:網友

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

有這么一段代碼:

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

也就是說,在構造函數中調用虛函數,調用的是正在構造的類中的虛函數,而不是子類的虛函數。

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

以上就是小編為大家帶來的c++ 構造函數中調用虛函數的實現方法全部內容了,希望大家多多支持VEVB武林網~


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 枞阳县| 囊谦县| 龙泉市| 石嘴山市| 洪雅县| 丹巴县| 舒城县| 新干县| 额敏县| 偃师市| 鸡西市| 玉田县| 泾阳县| 耒阳市| 霸州市| 金溪县| 西藏| 察隅县| 浦县| 西青区| 孟连| 同德县| 兴国县| 亳州市| 惠来县| 庐江县| 富源县| 枣强县| 方正县| 白玉县| 名山县| 买车| 健康| 温宿县| 阿克苏市| 旬阳县| 攀枝花市| 桃江县| 平泉县| 富宁县| 兰西县|