1、构造函数。
2、析构函数。调用情形:
1、包含对象的程序块末尾
2、静态对象在程序终止时
3、对象作为函数值参,在函数定义末尾;
4、对象通过复制构造函数创建并不再被需要;
5、对象通过new创建,并被delete销毁
6、对象作为数据成员的对象被销毁时;
3、类复制构造函数:形式:ClassName (const ClassName & original); 调用情形:
1、ClassName类型的对象被作为值参传递
2、返回值是ClassName类型的值;
3、ClassName类型的对象被声明并对其初始化;
4、表达式的求值产生ClassName类型的中间值。
(不显示声明类复制构造函数的坏处:如果在类中没有显式地声明一个拷贝构造函数,那么,编译器将会自动生成一个默认的拷贝构造函数,该构造函数完成对象之间的位拷贝。位拷贝又称浅拷贝)
如果在类运行中使用new分配内存,应该提供:把动态分配的内存还给堆的析构函数;编译器用来创建不同副本的复制构造函数;程序员用来创建不同副本的赋值运算符