在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] 删除。
我来说两句