设为首页 加入收藏

TOP

C++学习笔记18,C++11中的初始化列表构造函数(二)
2015-07-24 07:26:36 来源: 作者: 【 】 浏览:179
Tags:学习 笔记 初始 构造 函数

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<
         
          

 
          

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇hdu-4833-Best-Financing(DP) 下一篇BZOJ 刷题记录 PART 1

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: