gpt4 book ai didi

c++ - 此结构是否需要非默认构造函数

转载 作者:太空狗 更新时间:2023-10-29 20:18:19 26 4
gpt4 key购买 nike

我有以下 struct在 C++ 中,我想知道当我按如下方式使用它时是否需要为它定义一个非默认构造函数:boost::shared_ptr<node> p_node = boost:shared_ptr<node>();

struct node
{
std::string name;
std::map<std::string, std::vector<variant> > values; // it is possible that nodes contain as a value, key/value pairs so we need a map

NodeType type; //Enum

typedef struct attrib
{
std::string key;
variant value; //Boost::variant
};

std::vector<attrib> attributes;

boost::shared_ptr<node> childnode;
};

最佳答案

“此 POD 是否需要非默认构造函数”...什么 POD? POD 不包含字符串和映射等复杂对象。 POD 代表普通旧数据,类似于 double 和字符数组。

是否需要构造函数取决于您是否要确保所有数据都以某种正常状态初始化。 std::mapstd::vectorstd::string 都被初始化为空。另一个 boost::shared_ptr 将为 NULLattrib 只是一种类型,您最初不会有任何 attrib 对象,所以不用担心。但是,您的 NodeType 枚举不会在任何地方初始化,除非您自己在构造函数中进行初始化。那有关系吗?只有您可以决定,但从技术上讲,您必须确保在读取它之前将其分配给某处,否则从技术上讲您会得到未定义的行为。

关于c++ - 此结构是否需要非默认构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4397073/

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