/*
* 虚基类.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()
*/
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。