主函数: 运行结果: a的构造函数 b的构造函数 b的函数 指针p占用空间8 类占用空间8 //每个虚函数的类都要有8字节(64位系统)指针指向自己的虚函数表 a的析构函数 将 a *p=new b(); 改为 b *p=new b(); 运行结果: a的构造函数 b的构造函数 b的函数 指针p占用 ...
分类:
编程语言 时间:
2016-09-19 01:14:05
阅读次数:
147
虚拟继承是多重继承中特有的概念, 类D继承自类B1,B2,而类B1,B2都继承自类A, 当类A为非虚基类,即类B1,B2非虚继承类A时,继承关系如下图: A A ↓ ↓ B1 B2 ↘ D ↙ 代码如下: 因此,为了节省内存空间,可以将类A定义为虚基类,即类B1,B2虚继承类A,继承关系如下: A ...
分类:
其他好文 时间:
2016-09-10 16:03:24
阅读次数:
94
class A{ int a;}; class B : public A{ int b;}; class C : public A{ int c;}; class D : virtual B,virtual C{ int d;}; int _tmain(int argc, _TCHAR* argv[ ...
分类:
其他好文 时间:
2016-08-16 21:51:53
阅读次数:
88
第四章: function语意学 非静态成员函数: 名称的特殊处理: 静态成员函数由于缺乏this指针,因此差不多等于非成员函数: virtual table布局(单一继承): 单一继承下函数调用: 虚拟继承virtual table布局: 指向成员函数的指针: 虚成员函数的地址在编译时期是未知的: ...
分类:
编程语言 时间:
2016-07-21 19:27:46
阅读次数:
157
一.虚函数(1)C++中的虚函数的主要作用:实现了多态的机制。(2)多态:用父类型的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法..
分类:
其他好文 时间:
2016-06-27 00:08:45
阅读次数:
451
这里的inter1,2,3.要写base2的构造函数 final也写,否则里面的数据未初始化 inert2写的原因是假如有人使用直接使用inert2,里面数据就可以初始化了 总结一下,虚拟继承的基类就像一个指针一样差不多,但又有分别,因为弄了 private会使用不了数据。 以后每个要实现的类都要调 ...
分类:
其他好文 时间:
2016-06-14 01:07:13
阅读次数:
210
虚继承节省空间,解决二义性问题。虚拟继承是多重继承中特有的概念。虚拟基类是为解决多重继承而出现的。如下图所示。类D继承自类B1、B2,而类B1、B2都继承自类A,因此出现如右图所示的局面(非虚基类)。为了节省内存空间,可以将B1、B2对A的继承定义为虚拟继承,而A就成了虚..
分类:
其他好文 时间:
2016-04-26 22:23:12
阅读次数:
240
1.概括在CPlusPlus多继承编程中时常遇到这样一个问题--若子类实现多个基类或接口继承,多基类或接口中存在成员名相同,在客户与实现类之间的通信时编译器报错“不能这样使用,会产生二义性”由于这个问题的解决方法很多。比如说,可以把相同的成员名给改过来。但是,从专业的角..
分类:
编程语言 时间:
2016-04-23 23:19:17
阅读次数:
315
非虚拟继承【带虚函数的类】classBase{public:virtualvoidFunTest1(){cout<<"Base::FunTest1()"<<endl;}virtualvoidFunTest2(){cout<<"Base::FunTest2()"<<endl;}int_data1;};intmain(){Baseb;b._data1=0x01;return0;}Base类没有显式定义自己的构造函..
分类:
其他好文 时间:
2016-04-19 20:14:01
阅读次数:
225
在C++语言中,每个有 虚函数的类或者虚继承的子类,编译器都会为它生成一个虚拟函数表(简称:虚表),表中的每一个元素都指向一个虚函数的地址。(注意:虚表是从属于类的)此外,编译器会为包含虚函数的类加上一个成员变量,是一个指向该虚函数表的指针(常被称为vptr),每一个由此类别派生出来的类,都有这么一个vptr。虚表指针是从属于对象的。也就是说,如果一个类含有虚表,则该类的所有对象都会含有一个虚表指针,并且该虚表指针指向同一个虚表。虚表的内容是依据类中的虚函数声明次序--填入函数指针。派生类别会继承基础类别的...
分类:
其他好文 时间:
2016-04-16 19:05:02
阅读次数:
215