C++primer 閱讀筆記-模板與泛型編程(成員模板)

成員模板

  • 一個類(類模板或者普通類)可以包含本身是模板的成員函數
  • 成員模板不能是虛函數

普通類的成員模板

  • 下例爲一個類似於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());

類模板的成員模板

  • 類和成員各有自己的、獨立的模板參數
  • 在類模板外定義一個成員模板時,必須同時爲類模板和成員模板提供模板參數列表。類模板參數列表在前,後跟成員模板參數列表

實例化與成員模板

  • 實例化一個類模板的成員模板,必須同時提供類和函數模板的實參
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章