1.析构函数没有形参。因不能指定任何形参,所以不能重载析构函数虽然可为一个类定义多个构造函数,但只能提供一个析构函数,应用于所有类。
即使我们编写自己的析构函数,合成析构函数仍然运行。合成析构函数按对象创建时的逆序撤销每个非static成员,对于类类型的每个成员,合成析构函数调用该成员的析构函数来撤销对象。
2.构造函数,析构函数没有返回值。
3.构造函数,析构函数不能为const函数 //error,“const”“this”指针对于构造函数/析构函数是非法的
4.析构函数可以显式调用,
A*a=static_cast<A*>(operator new(sizeof(A)));
new (a) A;
a->~A();
显式调用析构函数的效果是适当地清除对象本身,并没有释放对象所占的内存。
那么是否可以显式调用构造函数,有网友说“个人可以自己把自己创造出来么?回答是显然的.而显视调用析构就好像一个人自己自杀了一般,是支持的. ”
A a;
//a.A();error,“函数样式转换”: 位于“.”运算符右边时非法
a.operator A();
a.A::A();