我正在进行仿真,它需要创建多个相当相似的模型。我的想法是拥有一个名为Model的类,并使用静态工厂方法来构建模型。例如; 模型:: createTriangle 或模型:: createFromFile 。我从以前的Java代码中汲取了这个想法,并正在寻找在C++中实现此想法的方法。
到目前为止,这是我想到的:
#include <iostream>
class Object {
int id;
public:
void print() { std::cout << id << std::endl; }
static Object &createWithID(int id) {
Object *obj = new Object();
obj->id = id;
return *obj;
}
};
int main() {
Object obj = Object::createWithID(3);
obj.print();
return 0;
}
有关此的一些问题:
最佳答案
您的代码当前包含内存泄漏:使用new
创建的任何对象都必须使用delete
清除。 createWithID
方法最好完全不使用new
并看起来像这样:
static Object createWithID(int id)
{
Object obj;
obj.id = id;
return obj;
}
这似乎需要该对象的附加副本,但实际上return value optimization通常会导致该副本被优化。
关于c++ - C++静态工厂构造函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23844964/