我正在尝试验证我对C++析构函数的理解。
我已经多次阅读到,如果我不自己编写析构函数,C++会提供一个默认的析构函数。但是,这是否意味着如果我编写了一个析构函数,编译器仍然会提供默认的清理堆栈分配的类字段的功能呢?
我的直觉是,无论如何,所有的类字段都会被销毁,无论我是否提供自己的析构函数。在这种情况下,原始语句中的"if"子句实际上有点误导性,更好的陈述方式可能是:
"无论您是否编写自己的析构函数,C++编译器始终会编写一个类似默认析构函数的序列来释放您的类的成员变量。然后,您可以根据需要定义自己的析构函数来指定额外的释放或其他任务。"
这样说对吗?
我已经多次阅读到,如果我不自己编写析构函数,C++会提供一个默认的析构函数。但是,这是否意味着如果我编写了一个析构函数,编译器仍然会提供默认的清理堆栈分配的类字段的功能呢?
我的直觉是,无论如何,所有的类字段都会被销毁,无论我是否提供自己的析构函数。在这种情况下,原始语句中的"if"子句实际上有点误导性,更好的陈述方式可能是:
"无论您是否编写自己的析构函数,C++编译器始终会编写一个类似默认析构函数的序列来释放您的类的成员变量。然后,您可以根据需要定义自己的析构函数来指定额外的释放或其他任务。"
这样说对吗?