在我的Doubly Linked列表类中,我正在编写析构函数,这是我的代码:
DLinkedList::~DLinkedList() {
if (head==NULL) {
return;
}
// Other code
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,用return;声明结束析构函数是否安全?我知道我可以使用语句结束我的void函数return;,但这是一个析构函数.
πάν*_*ῥεῖ 27
我的问题是,用
return;声明结束析构函数是否安全?我知道我可以使用语句来结束我的void函数,return;但这是一个析构函数.
析构函数与void返回类型的函数没有太大区别,此外,每当类的生命周期结束时,析构函数会自动执行1.
您可以使用return;,如果析构函数的执行应该停止,因为你与任何其他功能做.
1)这同样适用于构造函数BTW.
Lig*_*ica 12
是.
从这个意义上讲,析构函数体的作用就像一个返回的函数void,除了基础和成员即使你return很早就会被销毁(因为它从不依赖于析构函数体的内容).
遵守以下规则:
[special]/1:默认构造函数([class.default.ctor]),复制构造函数,移动构造函数([class.copy.ctor]),复制赋值运算符,移动赋值运算符([class.copy.assign])和析构函数([class.dtor])是特殊成员函数.[..]
[stmt.return]/1:函数通过return语句返回其调用者.
[stmt.return]/2:在EXPR -或-支撑-初始化列表一个的return声明被称为它的操作数.return不带操作数的语句只能在返回类型为cv void,构造函数或析构函数的函数中使用.[..]
[class.dtor]/9:[..]一个return声明([stmt.return]在析构函数)可能不会直接返回给调用者; 在将控制转移给调用者之前,调用成员和基础的析构函数.[..]