我正在学习一段代码,其中包含一个工厂方法,如果我没有记错我的面向对象。
工厂方法和相关的类可以用下面的伪c++描述。
类Actor是各种具体动作或操作实现的基类,这些具体动作或操作又作为派生类实现。
工厂方法createActor
接收从输入脚本读取的参数,因此在调用构造函数之前会进行一些错误检查。
我注意到,在所有情况下,当检测到错误时,我发现一个return 0
语句。这显然是可以做到的,因为代码(不是我写的)可以编译并运行。
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
是等效的。