C++虚基类
来源:互联网 发布:网络言论自由 高中作文 编辑:程序博客网 时间:2024/06/09 17:04
原文地址:http://blog.csdn.net/leonard_wang/article/details/8159583
教科书上面对C++虚基类的描述玄而又玄,名曰“共享继承”,名曰“各派生类的对象共享基类的的一个拷贝”,其实说白了就是解决多重多级继承造成的二义性问题。例如有基类B,从B派生出C和D,然后类F又同时继承了C和D,现在类F的一个对象里面包含了两个基类B的对象,如果F访问自己的从基类B那里继承过来的的数据成员或者函数成员那么编译器就不知道你指的到底是从C那里继承过来的B对象呢还是从D那里继承过来的B对象。
于是虚基类诞生了,将C和D的继承方式改为虚继承,那么F访问自己从B那里继承过来的成员就不会有二义性问题了,也就是将F对象里的B对象统一为一个,只有一个基类B对象,下面是一段代码说明了对虚基类的使用。
#include <iostream>
using namespace std;
class A
{
public:
int i;
void showa(){cout<<"i="<<i<<endl;}
};
class B:virtual public A //此处采用虚继承
{
public:
int j;
};
class C:virtual public A //此处采用虚继承
{
public:
int k;
};
class D:public B,public C
{
public:
int m;
};
int main()
{
A a;
B b;
C c;
a.i=1;
a.showa();
b.i=2;
b.showa();
c.i=3;
c.showa();
D d;
d.i=4;
d.showa();
//cout << "Hello world!" << endl;
return 0;
}
从这个代码我们可以看出B,C,D从A那里继承过来了i这个变量并且它们之间不会有任何影响,如果B和C不是虚继承方式的,那么d.i=4;就不能编译通过了。
- C++:虚基类
- C++:虚基类
- c++—虚基类
- c++-虚拟继承、虚基类
- 【C++】继承(虚基类)
- Problem C: 学生干部虚基类
- C++:虚基类详解
- c
- c
- c
- c
- C
- c
- c
- c
- C+
- c
- C
- nlp中的alignment
- Qt5.9.1结合REF开发基于chorm的浏览器(一)
- I
- 十五张思维导图带你快速学习PHP基础知识
- 落单的数
- C++虚基类
- STM32F简单应用
- Android6.0 PackageManagerService(PMS)-构造函数
- 策略路由 概述
- Maven-pom文件内置属性
- opencv下使用摄像头
- bootstrap-table显示数据时显示No matching records found
- Shell script 的默认变数(`$0, $1`...)等
- PSI and index do not match: PSI and index do not match