首页 >后端开发 >C++ >同名构造函数初始化:符合 C 标准吗?

同名构造函数初始化:符合 C 标准吗?

Patricia Arquette
Patricia Arquette原创
2024-11-15 10:18:03410浏览

Constructor Initialization with Same Name: C   Standard Compliance?

使用相同名称的成员变量的构造函数初始化:符合 C 标准吗?

问题:

是否在 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn