初始化数据成员的列表的正确术语是什么?

gsa*_*ras 9 c++ oop terminology initialization class

  • 一位同事说初始化列表,另一个初始化列表.
  • 一个SO 答案初始化列表,另一个初始化列表.

哪个是正确的*术语?

PS:他们都谈论数据成员初始化/列表.


*如果对您不正确,您可以回退到标准使用的术语.

YSC*_*YSC 12

哪个是正确的术语?

"正确"是模棱两可的,让我们看看:

  1. 标准称之为,
  2. C++大师称之为,
  3. vulgus调用它.

标准

[lass.base.init]/1&2

1在类的构造函数的定义中,直接和虚拟基类子对象和非静态数据成员的初始化程序可以由ctor-initializer指定,它具有表单

ctor-initializer:
  : mem-initializer-list

mem-initializer-list:
  mem-initializer ...opt
  mem-initializer-list , mem-initializer ...opt

mem-initializer:
  mem-initializer-id ( expression-list opt )
  mem-initializer-id braced-init-list

mem-initializer-id:
  class-or-decltype
  identifier
Run Code Online (Sandbox Code Playgroud)

2在mem-initializer-id中,在构造函数的类的范围内查找初始的非限定标识符,如果在该范围内找不到,则在包含构造函数定义的范围中查找它.[注意:如果构造函数的类包含与该类的直接或虚拟基类同名的成员,则命名该成员或基类并由单个标识符组成的mem-initializer-id引用该类成员.可以使用限定名称指定隐藏基类的mem-initializer-id. - 结束注释]除非mem-initializer-id命名构造函数的类,构造函数类的非静态数据成员,或该类的直接或虚拟基础,否则mem-initializer是错误的.

它被称为mem-initializer-list:这是一个我不会亲自使用的技术术语.

C++大师

我目前正在观看CppCon2018上的演讲,喜欢Herb Sutter,Kate Gregory,Timur Doumler,John Lakos ......这在Youtube上有售,我建议你也看一下.

他们使用术语初始化列表.或者当成员初始化列表不明确时.

现在,让我们比较一些搜索结果:

                               +----------------+-------------+
                               | Google scholar | Google book |
+------------------------------+----------------+-------------+
| "member initialization list" | 59 results     | 948 results |
| "member initializer list"    | 34 results     | 553 results |
+------------------------------+----------------+-------------+
Run Code Online (Sandbox Code Playgroud)

在书面媒体上,那些大师(好吧,每个人都可以写一篇论文或一本书,但大师倾向于写更多的那些)大多数时候称它为成员初始化列表.

常见的C++程序员

嗯,有一个人不知道这是什么,而且我听说的那个叫做初始化列表.即使用我的母语交谈,我也把它称为初始化列表.在法语中,我听到同事们称之为将其转换为初始化列表.我想有一些变化.

结论

将其称为初始化列表.这对我来说是正确的用语.


Pet*_*ter 5

C++标准 - 至少到目前为止 - 仅使用语法描述 mem-initializer-list ,它被指定为解析规则的一部分.该描述在1998年及以后的C++标准的所有版本中标题为"初始化基础和成员"的部分中.节号确实发生了变化(例如,C++ 98中为12.6.2,C++ 17中为15.6.2).

标准中没有英文描述.因此,传统上,人们使用他们认为代表概念的任何措辞.

就我个人而言,我使用"初始化名单"这个词,因为我是一个英语发言人,这个国家的语言受联合王国影响大于美国.