【发布时间】:2018-01-14 19:24:35
【问题描述】:
在 C++ 中,当您有一个对象的工厂类时,创建该对象的方法可以用作以下之一:
非静态方法:
声明:
class FooFactory{
public:
Foo* Create() {
return new Foo();
}
};
用法
FooFactory fooFactory;
Foo* foo = fooFactory.Create();
静态方法:
声明:
class FooFactory{
public:
static Foo* Create() {
return new Foo();
}
};
用法
Foo* foo = FooFactory::Create();
例如,使用静态方法可以避免实例化工厂。
这是一个好的做法,还是有任何其他好的论据支持或反对这两种解决方案?
我希望能列出可以帮助我和社区选择使用哪个优缺点的列表。
人们应该避免使用意见,因为我正在寻找基于专家经验的反馈。
【问题讨论】:
-
视情况而定。我的观点:如果你关心性能,你应该尽量减少成员函数的使用。有一个名为“释放你的函数”的 CppCon 演讲,你可能想看那个。