美文网首页
模板类重载运算符注意事项

模板类重载运算符注意事项

作者: 寽虎非虫003 | 来源:发表于2021-07-08 16:32 被阅读0次

    注意事项

    • 要先把模板类声明;
    • 声明要重载的运算符;
    • 具体定义模板类,并在类内部定义重载运算符为friend
    • 注意加一个<>或者<T>在运算符后面;
    • 在类外面实现运算符重载定义;
    • 如果是定义在模板类内部,不用操作如此复杂。

    一、定义在模板类外部

    //声明模板类
    template <typename T>
    class Base;
    
    //声明要重载的运算符
    template <typename T>
    ostream& operator<< (ostream &, const Base<T>&);
    
    //实现模板类
    template <typename T>
    class Base
    {
      public:
        //声明重载,注意<>或<T>
        template<>
        friend ostream& operator << <T>(ostream &, const Base<T> &);
    
        //或者如下这样声明重载也行,也要注意<>或<T>
        //friend ostream& operator << <>(ostream &, const Base<T> &);
    };
    
    template <typename T>
    ostream& operator<< ( ostream &out, const Base<T>& e )
    {
        return out << e->data;
    }
    

    二、定义在模板类内部

    //不需要预先声明
    
    template <typename T>
    class Base
    {
      public:
        //直接实现
        friend ostream& operator << <T>(ostream &, const Base<T> &)
        {
          return out << e->data;
        }
    };
    

    数据自己填

    相关文章

      网友评论

          本文标题:模板类重载运算符注意事项

          本文链接:https://www.haomeiwen.com/subject/codtpltx.html