如何在C ++中新建和初始化结构?

董凯文

在C语言中,我们实际上是

struct node *p = (node*)malloc(sizeof(node));   // casting is not necessary
p->a = 0;      // first  element
p->b = NULL;   // second element

动态分配内存中的空间,但是我该如何用C ++的方式做到这一点呢?

下面的线是正确的猜测吗?

node *p = new node {0, NULL};
轨道轻度竞赛

是的,你是对的。

假设node是一个汇总,则您的C ++版本是正确的(取模NULL而不是nullptr)。

话虽如此,如果这些初始值是“默认值”,则通常会编写一个默认构造函数来自动为您初始化这些成员:

struct node
{
    int a;
    node* b;

    node() : a(0), b(nullptr) {}
};

然后,您只需编写:

node* p = new node;

或更好:

auto p = std::make_unique<node>();

或者,更好的是:

node n;

默认构造虽然会带来一些后果。您可能不需要任何构造函数。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章