C++ 构造函数和析构函数
一、非静态局部对象:如A obj; A obj = b;
程序执行到定义对象的地方,没有提供初始值,调用默认构造函数,如果提供了初始值,调用带参构造函数或者拷贝构造函数,在作用域外调用析构函数。
二、静态局部对象:如static A obj; static A obj = b;
程序执行到定义对象的地方,没有提供初始值,调用默认构造函数(没有则初始化为0),如果提供了初始值,调用带参构造函数或者拷贝构造函数,在main函数结束后调用析构函数。
三、全局对象或类的静态数据成员对象:如A g_obj; A g_obj = b;
在main函数之前,没有提供初始值,调用默认构造函数(没有则初始化为0),如果提供了初始值,调用带参构造函数或者拷贝构造函数,在main函数结束后调用析构函数。
四、对象引用:初始化和销毁都不会调用构造函数和析构函数。
五、动态创建对象:
当调用new的时候,调用类型匹配的构造函数,调用delete的时候,调用析构函数。
六、对象赋值:调用类型匹配的operator=重载函数。

浙公网安备 33010602011771号