C++11中的初始化列表构造函数(Initialize_list Constructors)是将std::initializer_list
#include
#include <initializer_list>//必须包含该头文件
#include
using namespace std;
class A
{
private:
vector
public:
//参数为initializer_list
A(initializer_list
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<<endl;
}
};
int main()
{
A a={1,2,3,4,5,6,7,8,9,10,11,12};
//不能写成A a(1,2,3,4,5,6,7,8,9,10,11,12);
//a.show();
a.showVector();
}
使用前请查看你的编译器是否支持该C++11特性.我的是GCC C++ 4.8.2完美支持。 编译时请附加特性-std=c++11 编译及运行结果。 有其他参数的情况
//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< 赏感谢支持
支付宝
微信