您的位置:首页 > 编程语言 > C语言/C++

C++primer 阅读笔记-模板与泛型编程(成员模板)

2015-09-02 18:58 399 查看

成员模板

一个类(类模板或者普通类)可以包含本身是模板的成员函数

成员模板不能是虚函数

普通类的成员模板

下例为一个类似于unique_ptr的默认删除器的类

希望删除器适用于任何类型,所以将调用运算符定义为一个模板

成员模板也是也模板参数列表开始

class DebugDelete{
public:
DebugDelete(std::ostream &s = std::err):os(s){}
template<typename T> void operator(T *p) const
{os << "deleting unique_ptr"<<std::endl;delete p;}
private:
std::ostream &os;
}
//销毁p指向的对象
//实例化DebugDelete::operator()<int>(int *);
unque_ptr<int, DebugDelete>p(new int, DebugDelete());


类模板的成员模板

类和成员各有自己的、独立的模板参数

在类模板外定义一个成员模板时,必须同时为类模板和成员模板提供模板参数列表。类模板参数列表在前,后跟成员模板参数列表

实例化与成员模板

实例化一个类模板的成员模板,必须同时提供类和函数模板的实参
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息