目录
构造函数是一个特殊的成员函数,在创建对象的时候,编译器会自动的去调用。
而析构函数也是一个特殊的成员函数,当对象的生命周期结束时,编译器会隐式地去调用。动态对象分配以及释放时,也会调用构造函数与析构函数。
1.被显示调用
能否显式地调用构造函数与析构函数?
答案是当然可以!程序员可以显式地去调用特殊的成员函数。
参考下面例子。
#include <iostream>
using namespace std;
class Test
{
public:
Test() { cout << "Constructor is executed\n"; }
~Test() { cout << "Destructor is executed\n"; }
};
int main()
{
Test(); // pos1, 显式地调用构造函数
Test t; // pos2, 局部对象
t.~Test(); // pos3, 显式地调用析构函数
return 0;
}
运行结果:
Constructor is executed //对应pos1
Destructor is executed //对应pos1
Constructor is executed //对应po2
Destructor is executed //对应pos3
Destructor is executed //自动回收对象t
当显式地调用构造函数时