《C++Primer》5ed模板类中的一个例子

C++语言 码拜 5年前 (2016-05-06) 510次浏览
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就是标准库提供的,初始化表模板类型

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明《C++Primer》5ed模板类中的一个例子
喜欢 (0)
[1034331897@qq.com]
分享 (0)