私の講義では、関数内のすべての変数を手動で実行する代わりに、値をリセットするためにデストラクタを使用する人はいません。非自明なデストラクタを明示的にオブジェクトの寿命(why?)を終了呼び出すクラスの関数内でデストラクタを使用して値をリセットすることはできますか?
class Test1{
private:
int *test;
bool valid;
public:
Test1(int value,bool valid=false){
test=new int(value); this->valid=valid;
}
~Test1(){
delete test; test=nullptr; valid=false;
}
void ResetStats(int NewValue){
this->~Test1();
test1=new int(NewValue);
valid=false;
}
}
'new int(NewValue)'は 'std :: bad_alloc'をスローします。 'ResetStats'というコードがそれをキャッチします。しかし、どういうわけか、オブジェクトはトーストであり、回復することができても、もはやそれで動作できません。 – StoryTeller
または[デストラクタを明示的に呼び出す](https://stackoverflow.com/questions/16720201/calling-destructor-explicitly) –
「私の講義では、パラメータを開始値にリセットするためにデストラクタを使用する人はいません。それはデストラクタが行うことではなく、コンストラクタが行うことです。 –