【问题标题】:Default value of a struct member结构成员的默认值
【发布时间】:2016-09-19 02:10:20
【问题描述】:

(我确定这个问题已经得到解答,我只是不确定用什么词来问这个问题。如果有人能告诉我正确的术语是什么,那就太棒了!)

我正在 C++ 中为数据结构类实现 HashSet,并且我对有关结构的 C++ 语法有疑问。这是我的代码:

struct HashNode
{
    T value;
    HashNode* next = nullptr;
};

当调用new HashNode 时,这段代码能否正确初始化next 指向nullptr 的指针?如果不是,nextnew HashNode之后的值是多少?

【问题讨论】:

  • stackoverflow.com/questions/16782103/… 怎么样?见第二个答案。
  • 它可以编译吗?注意这些是初始值,而不是“默认”值。
  • 这就是我要找的东西,非常感谢@pingul
  • @EJP 是的,至少在我的机器上是这样(我相信 C++11)
  • 所以你问的是编译器是否为这个构造生成了正确的目标代码?

标签: c++ c++11 initialization initializer


【解决方案1】:

当调用 new HashNode 时,这段代码会正确初始化指向 nullptr 的 next 指针吗?

是的,它将被初始化为nullptr。这是in-class brace-or-equal initializer (default member initializer) (C++11 起),如果成员在成员初始化器列表中被省略,它将被使用。

通过一个默认的成员初始化器,它只是一个大括号或 equals 包含在成员声明中的初始化器,用于 如果成员在成员初始化列表中被省略

如果一个成员有一个默认的成员初始化器并且也出现在 构造函数中的成员初始化列表,默认成员 初始化器被忽略。

【讨论】:

  • 感谢您的术语!
猜你喜欢
  • 2012-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多