簡體   English   中英

C ++從父虛擬成員調用子虛擬成員

[英]C++ calling child virtual member from parent virtual member

我創建一個父類,調用它自己的虛擬成員。 但是此虛擬成員被子類覆蓋。

class Parent {
public:
    void doSomething() {
        doVirtual();
    }
protected:
    virtual void doVirtual() {}
};

class Child : public Parent {
protected:
    virtual void doVirtual() {}
};

Parent *c = new Child();
c->doSomething();

並使用Visual Studio 2008對其進行編譯,我的問題是:當我從IDE執行代碼(開始調試)時,它將調用子方法,但是當我直接運行可執行文件時,它將調用父方法。 我在這里做錯什么了嗎?

如果函數不執行任何操作(或執行完全相同的操作),您如何知道直接運行可執行文件時會調用父方法?

讓這兩個函數實際上做些不同的事情-如果它們相同,則編譯器可能會“推銷”這些函數(盡管我希望在調試版本中不太可能發生)。

如果這個答案沒有任何意義,請發布一個准確的(復制n粘貼)可編譯代碼段,以便我們准確了解正在發生的事情。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM