一、对象的创建和销毁过程
1、对象的创建过程
a、给对象划分内存空间(栈、堆空间)
b、执行初始化列表
根据继承表顺序来调用父类的无参构造函数,也可以调用父类的有参构造
:父类名(参数)
根据成员的定义顺序来调用类类型成员的无参构造函数,也可以调用类类型的有参构造函数
:成员名(参数)
初始化其他成员
c、执行自己的构造函数、申请资源
2、对象的销毁过程 a、执行自己的析构函数、释放资源 b、根据类类型成员的定义顺序,逆序调用类类型成员的析构函数 c、根据继承表的顺序,逆序调用父类的析构函数 b、释放对象的内存
简答题:
1、一个空的结构体对象在C语言中和C++中分别占多少个字节?为什么?
在C语言中占0字节,在C++中占1字节
在C++的结构体中是可以定义成员函数的,并且有四个默认隐藏的成员函数(构造、析构、拷贝、赋值),当通过结构对象调用成员函数时,会把对象的地址自动传递给成员函数,这种机制就要求结构对象在内存中必须要有一席之地,所以当结构体中没有成员时,编译器也会让结构体至少拥有1字节
2、C语言中的const与C++的const有什么相同与不同?
相同点:C语言与C++中的const都是用来保护数据的
不同点:
a、C++中会优化const变量的取值过程,哪怕const变量的内存被强行修改也不会改变const变量的值,这样的处理机制安全性更强
b、在C++中const还可以修饰成员函数(给隐藏的this指针增加const属性),从而定义为常函数