#include<iostream>
using namespace std;
class aa{
public:
void fun0(){
cout<<"a has been used"<<endl;
}
};
class b:virtual public aa{
public:
// void fun0(){
// cout<<"b has been used"<<endl;
// }
};
class c:virtual public aa{
public:
// void fun1(){
// cout<<"c has been used"<<endl;
// }
};
class d:public b,public c{
public:
};
int main(){
d d1;
d1.aa::fun0();
d1.fun0();
}
//虚基类使用的时候,最基类的某些成员并没有在后面的子类当中进行改变,所以并不需要写出来,但是通过三层访问并不能直接访问到成员
//因为不知道是继承中间子类谁的
//使用的方法
//1 进行作用域指定,好的发现最子类的并不能指定最基类的成员 失败
//2 修改为虚继承方式,构造为虚基类 这个时候发现1的作用作用域访问方法可以实现了,也可以直接进行访问基类当中的变量了。
//使用目的 将公共基类设置为虚基类,这个时候从不同的路径继承过来的同名数据还曾元你在内存中就只有一个副本,同一个函数名也只有一个映射
// 节省了内存空间,第二实现多继承当中 从最子类访问最原始基类的问题
c++中的虚基类(没有系统内部进阶,
最新推荐文章于 2024-06-29 20:43:16 发布