gsa*_*ras 9 c++ oop terminology initialization class
哪个是正确的*术语?
PS:他们都谈论数据成员初始化/列表.
*如果对您不正确,您可以回退到标准使用的术语.
YSC*_*YSC 12
哪个是正确的术语?
"正确"是模棱两可的,让我们看看:
[lass.base.init]/1&21在类的构造函数的定义中,直接和虚拟基类子对象和非静态数据成员的初始化程序可以由ctor-initializer指定,它具有表单
Run Code Online (Sandbox Code Playgroud)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 identifier2在mem-initializer-id中,在构造函数的类的范围内查找初始的非限定标识符,如果在该范围内找不到,则在包含构造函数定义的范围中查找它.[注意:如果构造函数的类包含与该类的直接或虚拟基类同名的成员,则命名该成员或基类并由单个标识符组成的mem-initializer-id引用该类成员.可以使用限定名称指定隐藏基类的mem-initializer-id. - 结束注释]除非mem-initializer-id命名构造函数的类,构造函数类的非静态数据成员,或该类的直接或虚拟基础,否则mem-initializer是错误的.
它被称为mem-initializer-list:这是一个我不会亲自使用的技术术语.
我目前正在观看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++标准 - 至少到目前为止 - 仅使用语法描述 mem-initializer-list ,它被指定为解析规则的一部分.该描述在1998年及以后的C++标准的所有版本中标题为"初始化基础和成员"的部分中.节号确实发生了变化(例如,C++ 98中为12.6.2,C++ 17中为15.6.2).
标准中没有英文描述.因此,传统上,人们使用他们认为代表概念的任何措辞.
就我个人而言,我使用"初始化名单"这个词,因为我是一个英语发言人,这个国家的语言受联合王国影响大于美国.