编译器合成构造函数的情形

来源:互联网 发布:跑包软件 编辑:程序博客网 时间:2024/06/05 01:18

1.类和对象

A(基类):含有缺省的构造函数B(派生类):没有显式定义任何构造函数,B中包含了A类的对象此种情况下,编译器会给B类合成默认的构造函数(在B类构造函数初始化列表位置调用A类的缺省构造函数)

2.继承

A(基类):有缺省的构造函数B(派生类)public公有继承A:没有显式定义任何构造函数编译器会给B类合成默认构造函数(在B类构造函数初始化列表位置)合成的默认构造函数只做一件事:就是调用A类的缺省构造函数,从而构造A类对象)

3.虚拟继承

A:普通的类B:  class B:virtual public A--->编译器会给B合成默认的构造函数

这里写图片描述

4.如果一个类中包含虚函数,那编译器会给此类合成构造函数
那此类的对象会多4个字节,在对象的前4个字节位置
这里写图片描述

具体可参考上一篇博客:http://blog.csdn.net/dangzhangjing97/article/details/78567275

原创粉丝点击