1. 程式人生 > >C++中虛基類例項

C++中虛基類例項

問題提出

當某類的部分或者全部的直接基類是從另一個共同的基類派生而來時,在這些直接基類中從上一級共同基類繼承來的成員就有相同的名稱。在派生類的物件中,這些同名的資料成員在記憶體中同時擁有度過哦俄拷貝,同一個函式名就會有多個對映。

可以使用作用域來唯一標識他們。

問題解決

也可以

將共同的基類設定為虛基類,這時從不同的路徑繼承過來的同名數據在記憶體中就只有一個拷貝,同名函式也只有一個對映。

--------------------------------------------------

/*
 * File:   main.cpp
 * Author: yubao
 *
 * Created on May 31, 2009, 9:04 AM
 */

#include <iostream>
using namespace std;
class B0
{
public:
    int nV;
    void fun(){cout<<"member of B0"<<endl;}
};

class B1: virtual public B0
{
public:
    int nV1;
};

class B2:virtual public B0
{
public:
    int nV2;
};

class D1:public B1,public B2
{
public :
    int nVd;
    void fun(){cout<<"member of D1"<<endl;}
};

/*
 *
 */
int main(int argc, char** argv) {
    D1 d1;
    d1.nV=2;
    d1.fun();
    return 0;
}