【发布时间】:2018-10-17 23:11:30
【问题描述】:
我发现可以使用同名的构造函数参数来初始化成员变量,如下例所示。
#include <cstdio>
#include <vector>
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");
}
};
int main() {
std::vector<int> myVector(3);
myVector.at(0) = 1;
myVector.at(1) = 2;
myVector.at(2) = 3;
Blah blah(myVector);
blah.printVec();
return 0;
}
g++ 4.4 带有参数-Wall -Wextra -pedantic 没有给出警告并且可以正常工作。它也适用于 clang++。我想知道 C++ 标准对此有何评论?是否合法并保证始终有效?
【问题讨论】:
-
好问题。我实际上一直在使用这种“风格”。从不怀疑这是允许的。
标签: c++