侯捷C++11:一致性初始化

例:int values[]{1,2,3};

  vector<int>v{2,3,5,7,11,13,17};

解析:编译器会将{2,3,5,7,11,13,17}做出一个initializer_list<T>,它关联一个array<T,n>。在调用 构造函数时,如果vector内部有以initializer_list<T>为参数的构造函数,则会将initializer_list<T>传入进行初始化。如果没有,则会将{2,3,5,7,11,13,17}分解成单个去调用单个参数的构造函数。

initializer_list<T>: 内部有这样两个变量:iterator指向array的首地址,size_type表array的长度。还有一个私有的构造函数,编译器可以调用,对iterator和size_type对象进行初始化。

 

posted @ 2018-07-11 10:20  鱼非子  阅读(363)  评论(0编辑  收藏  举报