打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
虚基类.cpp
/*
 * 虚基类.cpp
 *
 *  Created on: 2013-10-20
 *      Author: Administrator
 */
#include<iostream>
using namespace std;



class BaseB0
{
public:
    int nV;
    void fun()
    {
        cout << "在BaseB0成员函数fun()中" << "数据成员nV = " ;

    }
};

class BaseB1: virtual public BaseB0 // BaseB0为虚基类,派生BaseB1类
{
public:                //新增外部接口
    int nV;

};

class BaseB2:  virtual public BaseB0
{
public:            //新增外部接口
    int nV;
/*
    void fun()
    {
        cout << "在BaseB2成员函数fun()中" << "数据成员nV = " ;

    }
*/

};

class BaseC: public BaseB1, public BaseB2    //派生类BaseC声明
{
public:
    int nV;
    void fund()
    {
        cout << "在BaseC成员函数fun()中" << "," ;

    }

};
int main(void)
{
    BaseC c;
    c.nV = 2;
    c.fun();
    cout << c.nV << endl;
    c.fund();

    return 0;
}

/*
 * 从上述程序可以看出 虚基类中的数据成员nV和成员函数fun()在其派生类中只有一个拷贝
 * 若不止一份拷贝的话c.fun();会提示出错(模糊不清) 因为BaseC继承了两个类 那两类都继承了基类的fun()函数
 * 输出为:
 * 在BaseB0成员函数fun()中数据成员nV = 2
 * 在BaseC成员函数fun()中,
 *
 * 若BaseB2中加入
 *     void fun()
    {
        cout << "在BaseB2成员函数fun()中" << "数据成员nV = " ;

    }
    则结果为
 * 在BaseB2成员函数fun()中数据成员nV = 2
 * 在BaseC成员函数fun()中,
 *  原因是BaseB2 的fun()覆盖了基类的fun()
 */



本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
c++ 类的继承与派生
C加加 二义性问题
第8章 多态性
从 Arm 汇编看 Android C++虚函数实现原理
虚函数表里边保存的不一定是虚函数的地址
static和const修饰的类成员
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服