使用同名构造函数参数初始化成员变量
在 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> & vec): vec(vec) {}
以上是可以使用同名构造函数参数来初始化 C 成员变量吗?的详细内容。更多信息请关注PHP中文网其他相关文章!