C++的类中在构造函数中调用析构函数可行吗?

如下代码是否正确 class a { public: a(int a) { if(a>0) { test=a; } else { this->~a(); } private: int test; }; 实质上是问,析构函数是否在类的每一个部分都具有可见域 好像错了 因为运行结果为 创建对象 销毁对象 销毁对象 销毁对象 因此至少有一个对象销毁了2次,但是内存上又不可能,所以是没有执行内存清理的任务 因此创建出来的对象B依然有效,这不是我希望的 显然我的意思是、这个对象的传入参数满足一定条件时对象被创造,而传入参数不满足条件时,创建失败 虽然可以用new和if办到但是如果这么写实可以的 我要说的是析构函数不仅在类内可以显式调用,在该类的对象的可见域中也可以以对象名.~类名()或对象指针->~类名()的形式显式调用

第1个回答  2019-07-27
思想错误
这种情况
应该在
构造函数

抛出异常
如果构造函数失败
它不会去调用
析构函数
相似回答