例如,在我声明一个节点结构之后
struct node {
int data;
node *next;
}
int main(){
node *root = new node;
}
我知道它会自动将 root->data
初始化为 0,但是 root->next
会发生什么。是初始化为 nullptr 还是什么?
最佳答案
这些成员都不会像现在这样被初始化。如果您希望将它们分别设置为它们的“默认值”0
和 nullptr
,您可以使用如下内容:
struct node {
int data {};
node *next {};
};
现在,在每个新实例中,您将拥有 data == 0
和 next == nullptr
。此 C++11 功能称为“默认成员初始化器”。
如果您不能使用 C++11,您可以通过以下方式实现此值初始化
node* root = new node(); // <- Note the parenthesis
作为@vsoftco指出或通过 aggregate initialization像这样:
node root = {};
但是,如果可能的话,我更喜欢这篇文章顶部的变体,因为它会减少出错的机会。
关于c++ - 声明指向结构的指针后的值是多少,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34097502/