主函数: 运行结果: 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
class C :public A{ int data_c;public: C(){ data_c = 3; cout << "C " ; } C(int a, int b) :A(a){ data_c = b; cout << "C(a) " ; } void show(){ A::show(); ...
分类:
编程语言 时间:
2016-09-18 23:45:01
阅读次数:
220
在软件框架设计过程中,若引入智能指针来实现内存的自动管理,那意味着不得不放弃c++面向对象以虚函数为基础实现多态来提供统一接口的特性,从而采用模板来提供接口。 为什么c++不引入内存自动管理机制? c++这门程式设计语言的初衷就是不为程序员强加更多的枷锁,当然,这样会使该程式语言的易用性、可掌握性不 ...
分类:
编程语言 时间:
2016-09-18 12:04:36
阅读次数:
120
代码:析构函数为非虚函数 #include <iostream> using namespace std; class A { public: A() { cout << "A" << endl; } ~A() { cout << "~A" << endl; } }; class B : publi ...
分类:
其他好文 时间:
2016-09-14 01:47:47
阅读次数:
166
http://blog.csdn.net/xw13106209/article/details/6899370 1.参考文献 参考1: C++继承中构造函数、析构函数调用顺序及虚函数的动态绑定 参考2: 构造函数、拷贝构造函数和析构函数的的调用时刻及调用顺序 参考3: C++构造函数与析构函数的调用 ...
分类:
编程语言 时间:
2016-09-13 00:04:07
阅读次数:
288
http://www.cnblogs.com/jerry19880126/p/3616999.html#undefined 书上类继承相关章节到这里就结束了,这里不妨说下C++内存分布结构,我们来看看编译器是怎么处理类成员内存分布的,特别是在继承、虚函数存在的情况下。 工欲善其事,必先利其器,我们先 ...
分类:
编程语言 时间:
2016-09-09 06:36:19
阅读次数:
214
哪些函数不能被继承: 构造函数、析构函数、拷贝构造函数、赋值操作符重载函数(赋值构造函数) 哪些函数不能为虚函数:(定义虚函数一般是为了使用多态性质) 普通函数(非成员函数):不属于类的成员,不能用于多态,只能被重载。 静态成员函数:静态成员函数属于类的信息,被所有对象共享,不归某个对象所有,没有动 ...
分类:
其他好文 时间:
2016-09-07 22:36:38
阅读次数:
193
从例子入手,考察如下带有虚函数的类的对象内存模型: 注:在子类中出现与父类相同名称的变量和函数不是最佳实践,这里是为了说明其内存结构。 其对象内存结构见下图。 *图片来源于侯捷老师 对其分析如下: 1. 每个含有虚函数的类在内存中多一根指针(vptr),见图中a,b,c对象中第一个位置,存储的是虚函 ...
分类:
编程语言 时间:
2016-09-07 21:05:58
阅读次数:
240
转载自:陈皓 http://blog.csdn.net/haoel/article/details/1948051/ 前言 C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种 ...
分类:
编程语言 时间:
2016-09-07 10:37:13
阅读次数:
160