代码之家  ›  专栏  ›  技术社区  ›  gsamaras a Data Head

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

  •  9
  • gsamaras a Data Head  · 技术社区  · 7 年前
    • 初始化列表 另一个 初始化 列表
    • 一个 answer 说 另一个 初始化 列表 .

    哪个是正确的 * 术语


    *如果“正确”对您来说模棱两可,您可以回到标准中使用的术语。

    3 回复  |  直到 7 年前
        1
  •  12
  •   Community Mohan Dere    6 年前

    哪个是正确的术语?

    1. 标准称之为,
    2. 这个 vulgus

    标准

    [lass.base.init]/1&2

    1在类的构造函数定义中,直接和虚拟基类子对象以及非静态数据成员的初始值设定项可以由ctor初始值设定项指定,其形式为

    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
    

    2在mem初始值设定项id中,在构造函数类的作用域中查找初始非限定标识符,如果在该作用域中找不到,则在包含构造函数定义的作用域中查找初始非限定标识符[注意:如果构造函数的类包含与该类的直接或虚拟基类同名的成员,则命名该成员或基类并由单个标识符组成的mem初始值设定项id将引用该类成员。可以使用限定名指定隐藏基类的mem初始值设定项id。结束注释]除非mem初始值设定项id命名构造函数的类、构造函数类的非静态数据成员或该类的直接基或虚拟基,否则mem初始值设定项的格式不正确。

    mem初始值设定项列表

    C++大师

    我目前正在观看2018年CppCon2018大会上的演讲,由赫伯·萨特、凯特·格雷戈里、蒂姆·杜姆勒、约翰·拉科斯。。。这可以在Youtube上看到,我建议你也看一下。

    . 或者当它模棱两可的时候 成员初始值设定项列表 .

                                   +----------------+-------------+
                                   | Google scholar | Google book |
    +------------------------------+----------------+-------------+
    | "member initialization list" | 59 results     | 948 results |
    | "member initializer list"    | 34 results     | 553 results |
    +------------------------------+----------------+-------------+
    

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

    普通C++程序员

    嗯,有一个不知道这是什么,还有一个我听说过叫它 . 我叫它 初始化列表 ,即使是用我的母语说话。在法语中,我听说科勒格把它翻译成什么 . 我想可能有一些变化。

    结论

    叫它 . 这对我来说是正确的术语。

        2
  •  5
  •   Peter    7 年前

    C++标准——至少现在只使用语法描述 它被指定为解析规则的一部分。在1998和以后的C++版本的所有版本中,描述都是一个题为“初始化基础和成员”的章节。节号会发生变化(例如,在C++98中为12.6.2,在C++17中为15.6.2)。

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

    就我个人而言,我使用“起首字母列表”一词,因为我是一个说英语的国家,其公认语言受英国的影响大于美国。

        3
  •  3
  •   P.W    7 年前

    CPP标准草案N4713规定:

    15.6.2初始化基和成员[class.base.init]

    3. mem初始值设定项列表 可以使用表示基类类型的任何类或decltype初始化基类。

    struct A { A(); }; 
    typedef A global_A; 
    struct B { }; 
    struct C: public A, public B { C(); }; 
    C::C(): global_A() { } // mem-initializer for base A 
    

    5 A ctor初始值设定项