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

Kev*_*ong 1 c++ struct

在C中,我们实际上做到了

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

动态分配内存中的空格,但我怎么能用C++方式呢?

线下面是正确的猜测吗?

node *p = new node {0, NULL};
Run Code Online (Sandbox Code Playgroud)

Lig*_*ica 6

是的,你是对的.

假设node是一个聚合,你的C++版本是正确的(模数NULL而不是nullptr).

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

struct node
{
    int a;
    node* b;

    node() : a(0), b(nullptr) {}
};
Run Code Online (Sandbox Code Playgroud)

然后你只需写:

node* p = new node;
Run Code Online (Sandbox Code Playgroud)

或更好:

auto p = std::make_unique<node>();
Run Code Online (Sandbox Code Playgroud)

或者,更好的是:

node n;
Run Code Online (Sandbox Code Playgroud)

默认构造虽然有一些后果.您可能不需要任何构造函数.