C++11-14 第5讲 Uniform Initialization 一致初始化值 &initializer_list

2023-10-27

版权说明:本博文属于个人笔记,本人保留对本文的所有权益,未经许可不得以任何形式转载。

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内的元素可以被编译器逐一传给函数。

  • 例子1
#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;

}
  • 例子2
#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;
}

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++11-14 第5讲 Uniform Initialization 一致初始化值 &initializer_list 的相关文章

随机推荐