“显式调用构造函数和析构函数就像调用一般的函数一样, 并不意味着创建或销毁对象”这句话怎么理解?
1、显式调用构造函数:在调用构造函数之前对象必须已经创建
A a;
a.A::A();
2、显式调用析构函数:调用析构函数之后,对象并没有销毁;调用完之后,还会再调用一次析构函数销毁对象
A a;
a.A::~A();
3、编译器会插入调用构造函数、析枸函数的代码,这才是真正的对象创建、销毁;程序中自己调着玩,跟普通函数一样
举个例子:
class A
{
A() {cout<<"A()"<<endl;};
~A() {cout<<"~A()"<<endl};
}
int main()
{
A a;
a.A::A();
a.A::~A();
return 0;
}
输出:
A()
A()
~A()
~A()