版权说明:本博文属于个人笔记,本人保留对本文的所有权益,未经许可不得以任何形式转载。
Uniform Initialization 一致初始化值
新手困惑初始化怎么写。可能发生在(){}=中
任何初始化都用共通写法:{}
旧:Rect r1={1,2,3};Rect r1(1,2,3);int ia[6]={1,2,3};//好多种
现在:全用{}。编译器看到{t1,t2...tn}做出一个initializer_list<T>,关系到 array<T,n>。调用函数(例如ctor)时该array内的元素可以被编译器逐一传给函数。
#include<iostream>
#include<initializer_list>
using namespace std;
void print(initializer_list<int>vals) {
for (auto p = vals.begin(); p != vals.end(); ++p) {
cout << *p << endl;
}
}
int main() {
print({ 1,2,3,4,5 });
system("pause");
return 0;
}
#include<iostream>
#include<initializer_list>
using namespace std;
class P {
public:
P(int a, int b) {//①
cout << "P(int,int),a=" << a << ",b=" << b << endl;
}
P(initializer_list<int> initList) {//②
cout << "P(initializer_list<int>)\tvalues=";
for (auto i : initList)
cout << i << "\t";
cout << endl;
}
};
int main() {
P p1(77, 5);//调用P①
P p2{77, 5};//调用P②
P p3{ 77,5,42 };//调用P②
P s = { 77,5 };//调用P②
system("pause");
return 0;
}