c++ - 在构造函数中中断对象的创建

标签 c++

我类的构造函数检查某些条件。在某些情况下,它应该破坏对象的创建。我应该放一个析构函数还是只放 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/

相关文章:

c++ - 实现 'IMFTransform' 编码或解码 H264 或 AAC

c++ - 平衡机器人PID整定

c++ - 如何从命令行编译 Visual Studio 项目?

C++ 项目依赖问题 Visual Studio 2005

c++ - 如何确定 C++ 中的 IP 版本?

c++ - 为什么我的 do while 语句中出现无限循环?

c++ - 整数如何存储在内存中?

c++ - 在 C++ 中将 char 数组(以空格结尾)添加到字符串时出现错误。

android - 在 Android 上使用虚拟串行通信在两个进程(应用程序)中读取/写入字节

c++ - cpp 中的嵌套对象创建。下面伪代码中的函数调用顺序是什么?