析构函数的标准形式是:
~ClassName();
它没有参数,也没有返回值。C++ 标准规定每个类只能有一个析构函数,不能像普通成员函数那样通过参数列表进行重载。
当对象生命周期结束时(例如离开作用域或被delete),编译器会自动调用析构函数:
{
MyClass obj; // 离开作用域时自动调用 ~MyClass()
} 由于调用时没有参数,也没有办法指定不同版本的析构函数,所以重载没有意义。
这也是不能重载的根本原因之一。重载依赖于参数列表的不同,而析构函数不允许带参数,因此无法构成重载条件。
析构函数不能重载,是因为它没有参数、调用方式固定、只能有一个版本,编译器自动调用时无法区分多个版本。