有时您需要编写可能会失败的构造函数。例如,假设我要实例化带有文件路径的对象,例如
obj = new Object("/home/user/foo_file")
只要路径指向适当的文件,一切都很好。但是,如果字符串不是有效路径,则应该中断。但是如何?
你可以:
- 抛出异常
- 返回空对象(如果您的编程语言允许构造函数返回值)
- 返回一个有效的对象,但带有一个标志,指示其路径设置不正确(ugh)
- 其他?
我假设各种编程语言的“最佳实践”将以不同的方式实现此目标。例如,我认为ObjC更喜欢(2)。但是(2)不可能在C ++中实现,在C ++中,构造函数必须将void作为返回类型。在这种情况下,我认为使用(1)。
您可以使用您选择的编程语言来说明如何处理此问题并解释原因吗?
void
-他们返回一个对象。
new
调用operator new
分配内存,然后构造函数填充它。构造函数不返回任何内容,并new
返回从中获取的指针operator new
。但是,“不返回任何东西”是否意味着“返回void
”值得商grab。