我类的构造函数检查某些条件。在某些情况下,它应该破坏对象的创建。我应该放一个析构函数还是只放 return 语句?
它是这样的:
代码中的某处:
new Obj( string );
和我的构造函数:
Obj::Obj( string ) {
if( string == "something" ) {
// should I put this here or only return?
Obj::~Obj();
return;
}
// ...
}
我知道我可以在创建对象之前检查条件,但我只是想知道它是否正确(如果没有内存泄漏),因为它编译得很好而不会在运行时崩溃。
最佳答案
两者都不是,您应该抛出异常。
不会创建任何对象,这是处理这种情况的惯用方式。
您需要在调用上下文(或更高)中处理异常。
Obj::Obj( string ) {
if( string == "something" ) {
// should I put this here or only return?
throw ObjectCouldNotBeCreatedException();
}
}
关于c++ - 在构造函数中中断对象的创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11747307/