在我的讲座中,我没有看到有人使用析构函数将值重置为其起始参数,而是在函数中手动处理每个变量。在类函数中使用析构函数进行重置/删除是否会引起任何问题?
以下是我所说的一个小例子:
以下是我所说的一个小例子:
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 - Unslander Monicaint* test1;
而不是只用int test1;
。似乎存储总是在内部处理的。即使有使用指针的好理由,你也应该优先选择std::unique_ptr<int>
作为拥有指针。 - François Andrieux