虚基类
通过下图,多继承 ,我们知道一共有 4 个成员 被 继承,
其中有两个名字相同,而不是只继承了 3 个成员
如果 要访问 不同类 中的数据成员
- void C::output()
-
{
-
cout<<A::x<<endl;
-
cout<<B::x<<endl;
- }
如果我们 只这么写
- void C::output()
-
{
-
cout<<x<<endl;
- }
是 基类B 当中的 x
这种情况,我们使用 域限制符 :: 来区别
2.。
上面的程序中:C 一共有 4 个成员,2个 x 成员变量,2
个成员函数。
但是 上面的 是错误的,模棱两可问题 x,我们只需要指定
需要的 基类::
- void C::input(int xx)
- {
- x=xx;
- }
- void C::output()
- {
- cout<
- }
修改为:
- void C::input(int xx)
-
{
-
A::x = xx;
-
B::x = xx;
-
}
-
-
void C::output()
-
{
-
cout<<A::x<<endl;
-
cout<<B::x<<endl;
- }
有个想法:
看到 A B C类 都继承了 Cbase 类,A继承了 一个x ,B
继承了一个x,但是 C 继承了2个x,多一个x,就多占用了一
个内存,如果我们只想继承B C 类的一个x,我们应该怎么办
呢??
我们C++引用了 虚基数 的继承方式 如下:
这样我们就 留下了一个 x 的副本
实现 在 c 继承类 中 只继承了一个 x
使用 virtual
- class A:virtual public Cbase
-
{
-
-
};
-
-
class B:virtual public Cbase
-
{
-
-
};
-
-
class C:public A,public B
-
{
-
- };