工厂方法可以在错误的情况下返回0吗?



我正在学习一段代码,其中包含一个工厂方法,如果我没有记错我的面向对象。

工厂方法和相关的类可以用下面的伪c++描述。

类Actor是各种具体动作或操作实现的基类,这些具体动作或操作又作为派生类实现。

工厂方法createActor接收从输入脚本读取的参数,因此在调用构造函数之前会进行一些错误检查。

我注意到,在所有情况下,当检测到错误时,我发现一个return 0语句。这显然是可以做到的,因为代码(不是我写的)可以编译并运行。

但是,工厂方法应该返回一个指向actor类的指针。在这种情况下,return 0仅仅是return NULL的一种模糊的方式吗?也许我想多了。
class Actor
{
class ActorVariantA : Actor
{
}
// all other ActorVariants are omitted for brevity
Actor* createActor(arguments)
{
if (errorCondition)
return 0
if (conditionA)
return new ActorVariantA(arguments)
}
}

我发现了一个有点相关的问题,这又把我引向了Stroustrup本人。

所以,我的问题的答案是:有点,但不要这样做。

是的,你想得太多了。它实际上应该是return nullptr,但在这种情况下return 0是等效的。

相关内容

最新更新