template <typename T>class Blob{ public: typedef T value_type; typedef typename std::vector<T>::size_type size_type; Blob(); Blob(std::initializer_list<T> il); size_type size() const{return data_size();} bool empty() const{return data_empty();} void push_back(const T &t){data->push_back(t);} void push_back(T &&t){data->push_back(std::move(t));} void pop_back(); T& back(); T& operator[](size_type i); private: std::shared_ptr<std::vector<T> > data; void check(size_type i, const std::sting &msg) const; //... }; Blob<int> ia2={0,1,2,3,4}//有5个元素的Blob<int>
最后一句不懂,这五个元素构成的链表作为构造函数的参数?
解决方案
20
Blob(std::initializer_list<T> il);
20
C++11分为
无参数的缺省构造函数(包括全部参数都有缺省值的,有一个以上参数的构造函数)
初始化表 为参数的构造函数
虽然形式上,像单参构造函数,但是有了这个函数,可以用初始化表初始化对象。
单参构造函数:包括拷贝构造函数,移动构造函数
多参构造函数:
等几种类型,其中
缺省构造函数 ///不用提供任何信息,直接构造对象
拷贝构造函数///以现有对象为模板,构造一个新对象
移动构造函数///C++11新增的,以一个垂死的对象为模板,构造新对象,通常是为了实现数据转移
初始化表(为参数的)构造函数///C++11新增的,构造一个用初始化表,初始化的对象
等构造函数,都有特定的含义,用途。
std::initializer_lis t就是标准库提供的,初始化表模板类型
无参数的缺省构造函数(包括全部参数都有缺省值的,有一个以上参数的构造函数)
初始化表 为参数的构造函数
虽然形式上,像单参构造函数,但是有了这个函数,可以用初始化表初始化对象。
单参构造函数:包括拷贝构造函数,移动构造函数
多参构造函数:
等几种类型,其中
缺省构造函数 ///不用提供任何信息,直接构造对象
拷贝构造函数///以现有对象为模板,构造一个新对象
移动构造函数///C++11新增的,以一个垂死的对象为模板,构造新对象,通常是为了实现数据转移
初始化表(为参数的)构造函数///C++11新增的,构造一个用初始化表,初始化的对象
等构造函数,都有特定的含义,用途。
std::initializer_lis t就是标准库提供的,初始化表模板类型