c++ - 如何在程序中动态初始化一个对象?

标签 c++ object dynamic

在c++中如何在没有继承的情况下在程序中动态初始化对象? 例如我有 A 类和 B 类。根据条件我需要创建对象的实例,但我不知道我需要创建什么对象,这取决于用户输入的信息;

示例代码:

int i;
cin>>i>>endl;
void *obj;
if(i)
    obj = new A();
else
    obj = new B();

最佳答案

您可以使用 std::anystd::variant取决于您的需求。

将指针强制转换为 void* 是(大多数时候)一个坏主意,因为您丢失了对象的类型并且必须处理原始指针。这意味着您必须管理资源,调用正确的析构函数...anyvariant 会为您完成这些工作。

我建议使用 variant 而不是 any,除非您有特定需要 any 因为 variant让您更好地控制类型:您的值只能包含有限的类型列表。

关于c++ - 如何在程序中动态初始化一个对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44693598/

相关文章:

php - 解析我无法识别为对象、数组或 Json 的字符串

swift - 动态编程变量初始化

c++ - 在带有 VS 2008 的 Qt 4.8.5 网络示例中找不到 ui_chatdialog.h

c++ - 无法理解与模板和构造函数相关的错误

c++ - 派生模板类不调用构造函数

object - 超越对象实例的比较

javascript - Google 图表对象错误 : google not defined

bash - libipopt.so.1 : Cannot open shared object file

java - 在 JDBC 查询中使用表名作为参数的安全方法

c++ - 通过迭代器分配给元素