首页 > 后端开发 > C++ > 可以使用同名构造函数参数来初始化 C 成员变量吗?

可以使用同名构造函数参数来初始化 C 成员变量吗?

Susan Sarandon
发布: 2024-12-12 10:53:09
原创
769 人浏览过

Can C   Member Variables Be Initialized Using Constructor Arguments with the Same Name?

使用同名构造函数参数初始化成员变量

在 C 中,可以使用同名构造函数参数来初始化成员变量作为成员变量。如下例所示,该技术已被证实在使用 g 4.4 和 clang 编译时不会出现警告或错误。

class Blah {
    std::vector<int> vec;

public:
    Blah(std::vector<int> vec): vec(vec) {}

    void printVec() {
        for (unsigned int i = 0; i < vec.size(); i++)
            printf("%i ", vec.at(i));

        printf("\n");
    }
};
登录后复制

根据 C 标准 (§12.6.2/7),这个初始化是合法的并且保证可以工作。 mem-initializer 的表达式列表中的名称在构造函数的范围内进行计算,允许使用 this 指针来引用正在初始化的对象。

在上面的示例中,构造函数参数vec被初始化为同名成员变量vec。每次创建 Blah 类的对象时都会进行此初始化。

建议

考虑接受构造函数参数作为 const 引用,以避免不必要地复制原始向量对象,如下所示:

Blah(const std::vector<int> &amp; vec): vec(vec) {}
登录后复制

以上是可以使用同名构造函数参数来初始化 C 成员变量吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板