gpt4 book ai didi

C++ 静态工厂构造函数

转载 作者:太空狗 更新时间:2023-10-29 23:24:41 24 4
gpt4 key购买 nike

我正在进行模拟,它需要创建多个非常相似的模型。我的想法是有一个名为 Model 的类,并使用静态工厂方法来构造模型。例如; Model::createTriangleModel::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;
}

关于这个的一些问题:

  • 这是制作对象的公认且干净的方式吗?
  • 返回的引用是否始终确保正确删除对象?
  • 有什么方法可以在没有指针的情况下做到这一点吗?

最佳答案

仅作记录,下面是这个程序在适当的 C++ 中的样子:

class Object
{
int id;

// private constructor, not for general use
explicit Object(int i) : id(i) { }

public:
static Object createWithID(int id)
{
return Object(id);
}
};

int main()
{
Object obj1 = Object::createWithID(1);
auto obj2 = Object::createWithID(2); // DRY

// return 0 is implied
}

这可能不是人们通常所说的“工厂”,因为工厂通常涉及一些动态类型选择。不过,有时会使用术语“命名构造函数”来指代返回类实例的静态成员函数。

关于C++ 静态工厂构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23844964/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com