C++模板类模板成员函数的定义与使用

1 模板类和模板函数

对于大多数人来说都知道如何定义模板类和模板函数,很少会触及模板类的成员函数还有自己的模板参数,在seastar框架中大量使用模板,便可以见到模板类的模板成员函数的使用

2 定义与使用

为什么这样定义和实现,C++的规定而已,直接上例子:


#include <iostream>

template <typename T>
class Foo
{
public:
    Foo() {}
    ~Foo() {}
    //成员函数有自己的模板参数
    template <typename S>
    void print_s_a(S p)
    {
        std::cout << "S= " << p << std::endl;
        std::cout << "T = " << _a << std::endl;
    } 

    template <typename TT>
    void print_tt_a(TT p);

private:
    T _a;    
};

//注意成员模板函数定义在类外的方法
template <typename T>
template <typename TT>
void Foo<T>::print_tt_a(TT p)
{
    std::cout << "TT = " << p << std::endl;
    std::cout << "T = " << _a << std::endl;
}

int main()
{
    Foo<int> f;
    f.print_s_a("123");

    f.print_tt_a("456");
    return 0;
}

3 总结

C++模板是个比较复杂的问题,尤其是C++11更是丰富了模板相关标准,推荐阅读seastar的源码,对C++的理解可以更加深入。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.C和C++的区别?C++的特性?面向对象编程的好处? 答:c++在c的基础上增添类,C是一个结构化语言,它的重...
    杰伦哎呦哎呦阅读 13,273评论 0 45
  • 好像是叫做安氏离游戏越来越远离生活越来越近生活没游戏好玩
    小王紙kiah阅读 3,660评论 0 4
  • 微信公众号的运营技巧 1)重视定位:考虑微信公众号要承担的职责,给微信公众号一个合适的身份。定位微信公众号的形象 ...
    pleasecallme枫子阅读 3,068评论 0 0
  • 前言 纵观市场,大多数的APP都采用导航+fragment这种设计模式,如微信,QQ,京东,淘宝,究其原因:简洁。...
    心若冰清_阅读 5,466评论 0 1
  • 昨天看到翠红讲的几句话,都讲到我心里了,所以想和她聊聊,约她的时间,今天来看她和志云学古琴,想从侧面了解志云,拿这...
    罗洪绮阅读 3,649评论 0 4