Я з’ясував, що можна ініціалізувати змінні-члени аргументом конструктора з тим самим іменем, як показано в прикладі нижче.
#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 ++. Цікаво, що про це говорить стандарт С ++? Чи законно та гарантовано завжди працювати?