国产探花免费观看_亚洲丰满少妇自慰呻吟_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武林網~


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 维西| 榆社县| 延安市| 丰宁| 马边| 洪江市| 沁源县| 凉城县| 永靖县| 新干县| 方山县| 镇坪县| 辽阳县| 新津县| 海口市| 富顺县| 固镇县| 兴宁市| 德保县| 嘉善县| 甘洛县| 长汀县| 二手房| 绵竹市| 岗巴县| 阳东县| 夏河县| 柳河县| 青神县| 平潭县| 海城市| 康保县| 赤壁市| 双牌县| 应城市| 环江| 莲花县| 称多县| 五常市| 汕头市| 东光县|