在我的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]
在析构函数)可能不会直接返回给调用者; 在将控制转移给调用者之前,调用成员和基础的析构函数.[..]
归档时间: |
|
查看次数: |
1970 次 |
最近记录: |