相关疑难解决方法(0)

显式调用析构函数会导致未定义的行为吗?

在我看来,下面的代码(来自一些C++问题)应该导致UB,但它似乎不是.这是代码:

#include <iostream>
using namespace std;
class some{ public: ~some() { cout<<"some's destructor"<<endl; } };
int main() { some s; s.~some(); }
Run Code Online (Sandbox Code Playgroud)

答案是:

some's destructor
some's destructor
Run Code Online (Sandbox Code Playgroud)

我学习了c ++ faq lite,我们不应该显式调用析构函数.我认为在显式调用析构函数后,应该删除对象s.程序完成后会自动再次调用析构函数,它应该是UB.但是,我在g ++上尝试了它,并获得与上述答案相同的结果.

是因为这个类太简单了(不涉及新的/删除)?或者在这种情况下它根本不是UB?

c++ destructor undefined-behavior

5
推荐指数
2
解决办法
1441
查看次数

标签 统计

c++ ×1

destructor ×1

undefined-behavior ×1