欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2016年12月21日 09:59:27   投稿:jingxian  
下面小編就為大家?guī)?lái)一篇c++ 構(gòu)造函數(shù)中調(diào)用虛函數(shù)的實(shí)現(xiàn)方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

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

有這么一段代碼:

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

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

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

以上就是小編為大家?guī)?lái)的c++ 構(gòu)造函數(shù)中調(diào)用虛函數(shù)的實(shí)現(xiàn)方法全部?jī)?nèi)容了,希望大家多多支持腳本之家~

相關(guān)文章

  • 使用pybind11封裝C++結(jié)構(gòu)體作為參數(shù)的函數(shù)實(shí)現(xiàn)步驟

    使用pybind11封裝C++結(jié)構(gòu)體作為參數(shù)的函數(shù)實(shí)現(xiàn)步驟

    這篇文章主要介紹了用pybind11封裝C++結(jié)構(gòu)體作為參數(shù)的函數(shù)實(shí)現(xiàn)步驟,本文分步驟通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-02-02
  • C++鏈?zhǔn)蕉鏄?shù)深入分析

    C++鏈?zhǔn)蕉鏄?shù)深入分析

    二叉樹(shù)的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)是指,用鏈表來(lái)表示一棵二叉樹(shù),即用鏈來(lái)指示元素的邏輯關(guān)系。通常的方法是鏈表中每個(gè)結(jié)點(diǎn)由三個(gè)域組成,數(shù)據(jù)域和左右指針域,左右指針?lè)謩e用來(lái)給出該結(jié)點(diǎn)左孩子和右孩子所在的鏈結(jié)點(diǎn)的存儲(chǔ)地址
    2022-06-06
  • C 語(yǔ)言常用方法技巧

    C 語(yǔ)言常用方法技巧

    本文主要介紹了C語(yǔ)言常用方法技巧。具有很好的參考價(jià)值,下面跟著小編一起來(lái)看下吧
    2017-03-03
  • C++實(shí)現(xiàn)學(xué)生選課系統(tǒng)

    C++實(shí)現(xiàn)學(xué)生選課系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)學(xué)生選課系統(tǒng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-02-02
  • C++語(yǔ)言設(shè)計(jì)實(shí)現(xiàn)五子棋

    C++語(yǔ)言設(shè)計(jì)實(shí)現(xiàn)五子棋

    這篇文章主要為大家詳細(xì)介紹了C++語(yǔ)言設(shè)計(jì)實(shí)現(xiàn)五子棋,包括數(shù)據(jù)結(jié)構(gòu)和對(duì)象設(shè)計(jì)及主函數(shù)調(diào)用實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • VC使用編譯時(shí)間作為版本號(hào)標(biāo)識(shí)的方法

    VC使用編譯時(shí)間作為版本號(hào)標(biāo)識(shí)的方法

    這篇文章主要介紹了VC使用編譯時(shí)間作為版本號(hào)標(biāo)識(shí)的方法,需要的朋友可以參考下
    2017-03-03
  • C語(yǔ)言開(kāi)發(fā)實(shí)現(xiàn)井字棋及電腦落子優(yōu)化示例詳解

    C語(yǔ)言開(kāi)發(fā)實(shí)現(xiàn)井字棋及電腦落子優(yōu)化示例詳解

    以前上課經(jīng)常和同桌玩起井字棋,那么我們就當(dāng)我們回憶童年,現(xiàn)在也用C語(yǔ)言來(lái)實(shí)現(xiàn)井字棋,本次代碼相對(duì)于初階的井字棋,在電腦下棋代碼部分做了優(yōu)化,使得電腦更加具有威脅
    2021-11-11
  • 對(duì)C++默認(rèn)構(gòu)造函數(shù)的一點(diǎn)重要說(shuō)明

    對(duì)C++默認(rèn)構(gòu)造函數(shù)的一點(diǎn)重要說(shuō)明

    下面小編就為大家?guī)?lái)一篇對(duì)C++默認(rèn)構(gòu)造函數(shù)的一點(diǎn)重要說(shuō)明。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-12-12
  • Jsoncpp的安裝與使用方式

    Jsoncpp的安裝與使用方式

    JsonCpp是一個(gè)用于解析和生成JSON數(shù)據(jù)的C++庫(kù),它支持解析JSON文件或字符串到C++對(duì)象,以及將C++對(duì)象序列化回JSON格式,安裝JsonCpp可以通過(guò)命令安裝,默認(rèn)安裝動(dòng)態(tài)庫(kù),JsonCpp的使用主要涉及三個(gè)類(lèi):Json::Value用于表示JSON值
    2025-01-01
  • c++標(biāo)準(zhǔn)庫(kù)讀寫(xiě)ini文件的實(shí)現(xiàn)示例

    c++標(biāo)準(zhǔn)庫(kù)讀寫(xiě)ini文件的實(shí)現(xiàn)示例

    本文介紹了一個(gè)完整的INI文件類(lèi)的實(shí)現(xiàn),包含讀取和寫(xiě)入操作,通過(guò)IniFile.h頭文件和IniFile.cpp實(shí)現(xiàn)文件,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-10-10

最新評(píng)論