问题:
是否在 C 范围内使用与成员变量同名的构造函数参数来初始化成员变量的标准?
示例:
class Blah { std::vector<int> vec; public: Blah(std::vector<int> vec): vec(vec) {} };
答案:
是的,它是合法的,并且保证按照 C 标准工作。
说明:
C 的第 12.6.2/7 节标准规定,“mem-initializer 的表达式列表中的名称在指定 mem-initializer 的构造函数的范围内进行评估。”换句话说,构造函数参数和成员变量是不同的实体,但它们使用相同的名称。
这允许我们使用构造函数参数的值初始化成员变量,如示例所示。
注意:
建议对构造函数参数使用 const 引用,以避免不必要的对象复制。因此,最好使用:
Blah(const std::vector<int> &vec): vec(vec) {}
以上是同名构造函数初始化:符合 C 标准吗?的详细内容。更多信息请关注PHP中文网其他相关文章!