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

来源:互联网 发布:远景能源软件研发待遇 编辑:程序博客网 时间:2024/05/17 01:25

成员模板

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

普通类的成员模板

  • 下例为一个类似于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());

类模板的成员模板

  • 类和成员各有自己的、独立的模板参数
  • 在类模板外定义一个成员模板时,必须同时为类模板和成员模板提供模板参数列表。类模板参数列表在前,后跟成员模板参数列表

实例化与成员模板

  • 实例化一个类模板的成员模板,必须同时提供类和函数模板的实参
0 0
原创粉丝点击