classA { public: int x, y, z; // 注意:数据成员必须是public的。 voidprint(){ cout << x << " " << y << " " << z << endl; } };
classB { public: vector<int> vec_; int x_; voidprint(){ cout << "vec_={ "; for (int x : vec_) { cout << x << " "; } cout << "}, x_=" << x_ << endl; } };
classC { public: vector<int> vec_; voidprint(){ cout << "vec_={ "; for (int x : vec_) { cout << x << " "; } cout << "}" << endl; } };
intmain(){ // C++会构造一个列表初始化的默认构造函数, // 以下(1)和(2)都是调用这个默认构造函数。 A a1{1,2,3}; // (1) 列表初始化 A a2({4,5,6}); // (2) 同(1) a1.print(); a2.print();
B b1{{1,2,3}, 4}; // 内部的"{1,2,3}"用于构造vec_,"4"用于初始化x_ b1.print();
// C C1{1,2,3}; // (1) 这里会报错"error: too many initializers for ‘C’", // // 因为C只有一个数据成员vec_,这里却传入了3个参数 C c2{{1,2,3}}; // (2) 其中,内部的"{1,2,3}"用于构造vec_,外层的"{}"用于对c2本身进行构造 c2.print();