C++11中的初始化列表构造函数(Initialize_list Constructors)是将std::initializer_list
作为第一个参数的构造函数,并且没有任何其他参数(或者其他参数具有默认值)。例如:
#include
#include
//必须包含该头文件 #include
using namespace std; class A { private: vector
myVector; public: //参数为initializer_list
args A(initializer_list
args){ for(auto iter=args.begin();iter!=args.end();++iter) myVector.push_back(*iter); } A(const A &)=delete; void showVector(){ for(auto citer=myVector.cbegin();citer!=myVector.cend();++citer) std::cout<<*citer<<" "; cout<
使用前请查看你的编译器是否支持该C++11特性.我的是GCC C++ 4.8.2完美支持。
编译时请附加特性-std=c++11
编译及运行结果。

有其他参数的情况
<??http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHByZSBjbGFzcz0="brush:java;">//ti2.cpp
#include
#include
//必须包含该头文件 #include
using namespace std; class A { private: vector
myVector; string str; public: //参数为initializer_list
args A(initializer_list
args,string s="initailizer_list"){ for(auto iter=args.begin();iter!=args.end();++iter) myVector.push_back(*iter); //i=ii;//i必须有默认值,并且其实这一句没用 str=s;//看后面的,因此这个默认值应该是类内成员初始化 //即定义时赋予初始值:string str="initailizer_list" //不能写成A a={1,2,3,4,5,6,7,8,9,10,11,12.5,55,“is this word!”}; } A(const A &)=delete; void showVector(){ for(auto citer=myVector.cbegin();citer!=myVector.cend();++citer) std::cout<<*citer<<" "; cout<
编译运行结果: