virtual-inheritance

    0熱度

    2回答

    雖然我學會了如何實現C++中的最後一節課,我找到了這樣的語句: "the most derived class's ctor needs to directly call the virtual base class's ctor." 但是,我無法找到C++標準的聲明原件。 (N3126) 誰能告訴我確切的頁碼? 在此先感謝。

    0熱度

    1回答

    可能重複: gcc c++ virtual inheritance problem 大家好, 我讀的有效C++由斯科特·邁爾斯書。有人提到關於虛擬基類和虛擬繼承如下。 控制虛擬基類初始化的規則比非虛擬基的規則更加複雜和不直觀。初始化虛擬基地的責任由層次結構中最派生的類承擔。當一個新的派生類中被添加到層次結構,它必須承擔其虛基類初始化responsiblities(直接和間接) 問題是在上面的語句是

    7熱度

    2回答

    上http://en.wikipedia.org/wiki/Virtual_inheritance class Animal { ... }; // Two classes virtually inheriting Animal: class Mammal : public virtual Animal { ... }; 我也看了書使用以下語法, class Mammal :

    4熱度

    4回答

    據我所知,菱形繼承產生歧義,它可以通過virtual Base Classes使用繼承迴避的是,問題不是它。當類是多態時,問題是關於菱形層次結構中派生最多的類的大小。下面是一個示例代碼和輸出樣本: #include<iostream> using namespace std; class Base { public: virtual void doSomething

    0熱度

    1回答

    我有4個WinForm應用程序。 Form1從baseForm繼承,Formv2從Formv1繼承,v3從v2繼承,v4從v3繼承。有大約2000個控件分佈在包含選項卡的多個選項卡中。 這真的是殺了Visual Studio 2008,經常導致它崩潰,並且一般來說性能很差。 我想創建一個FormV5,它只從baseForm繼承,但包含formsv1到v4(所有這些)的所有可視佈局,(在baseFo

    3熱度

    2回答

    我有代碼如下: class A { }; class B: public virtual A { public: B() { cerr << "B()"; } B(const A& a) { cerr << "B(const A&)"; } }; class C: public B { };

    6熱度

    2回答

    我想繼承兩個具有不同參數列表的同名方法派生類。其中一個是虛擬的,在派生類中被重寫,另一個是非虛​​擬的。這樣做時,我在嘗試從派生類對象訪問基類的非虛方法時遇到編譯錯誤。 這裏是代碼片段 class Base { public: void f() { cout << "[Base::f()]" << endl; } virtual void f(int

    3熱度

    2回答

    是否存在任何傷害或者它被認爲是不好的設計,以便在當前「處於最底層」(即,派生最多)的未完成類層次結構中預先派生虛擬類, ?是否有一個很好的理由需要等到實際需要虛擬繼承(即有人決定擴展層次結構併產生鑽石)?

    1熱度

    1回答

    我從來沒有見過用作虛擬和非虛擬基礎的類(即,如果某個類旨在成爲祖先,那麼我們通常事先知道關於繼承的類型 - 虛擬還是非虛擬)。 所以我想在C++中存在一個容易出錯的自由來專門化基類列表中的「虛擬」繼承。它應該更好地指定爲「虛擬」的基類本身 或者也許我錯了? 如果否,是否有人可以描述一些技術來防止意外的非虛擬繼承這樣的「虛擬」類? 或者在即將到來的C++標準中有一些觀點嗎? (很抱歉,如果一式兩份)

    3熱度

    1回答

    我有關於C++中嵌套繼承的問題。我有三類:Base,Middle和Top。通常我使用公有繼承從Middle派生的時候,但我有一個類(Top)已經從Middle私有繼承,但是它應該公開Base方法爲公共用途... 這裏是我的解決方案,可以嗎? class Base { // ... } class Middle : public virtual Base {