San*_*099 30 c++ null constructor return
我知道构造函数不会"返回"任何东西,但是例如,如果我调用CMyClass *object = new CMyClass()是否有任何方法使对象为NULL如果构造函数失败?在我的情况下,我有一些必须加载的图像,如果文件读取失败,我希望它返回null.有没有办法做到这一点?
提前致谢.
Mic*_*zek 27
我同意其他人你应该使用异常,但如果你确实需要因某些原因使用NULL,请将构造函数设为私有并使用工厂方法:
static CMyClass* CMyClass::create();
Run Code Online (Sandbox Code Playgroud)
这意味着你不能正常构造实例,并且你不能再在堆栈上分配它们,这是一个相当大的缺点.
Dav*_*eas 22
构造函数不返回值.它们初始化一个对象,报告错误的唯一方法是通过异常.
请注意,构造函数不进行任何类型的内存管理.内存分配,然后调用构造函数初始化它.并且该内存可以动态分配(type *x = new type;)但它也可以在stack(type x;)或更复杂类型的子对象中.除了第一种情况之外的所有情况,null根本没有意义.
这样做的方法是,如果你发现在你的构造函数中没有工作的东西,你应该抛出异常.如果C++无法为您的对象分配内存,则会发生这种情况 - 它会抛出std :: bad_alloc.您应该使用std :: exception或子类.
| 归档时间: |
|
| 查看次数: |
20393 次 |
| 最近记录: |