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

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

作者: 寽虎非虫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;
    }
};

数据自己填

相关文章

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

    注意事项 要先把模板类声明; 声明要重载的运算符; 具体定义模板类,并在类内部定义重载运算符为friend。 注意...

  • Python全栈之路系列之面向对象运算符重载

    运算符重载的概念如下: 运算符重载让类拦截常规的Python运算; 类可重载所有Python表达式运算符; 类也可...

  • C++ 部分运算符重载

    可重载的运算符 不可重载的运算符和符号 重载运算符为类的成员函数 重载运算符为友元函数 重载赋值运算符 重载流插入...

  • 如何为类和结构体自定义运算符实现

    运算符重载 类和结构体可以为现有的运算符提供自定义的实现,称为运算符重载。 一元运算符重载 类与结构体也能提供标准...

  • 为类和结构体自定义运算符实现

    运算符重载 类和结构体可以为现有的运算符提供自定义的视线,称为运算符重载 一元运算符重载 类与结构体也能提供标准一...

  • 15.C++泛型

    模板函数 模板类 函数模板和友元函数 注意,只在重载左移右移运算符的时候使用友元函数,其他都不要用,友元函数容易导...

  • 1.2.21_C++ 类成员访问运算符 -> 重载

    C++ 重载运算符和重载函数 类成员访问运算符( -> )可以被重载,但它较为麻烦。它被定义用于为一个类赋予"指针...

  • c++——函数符号重载2-15

    一般情况下,单目运算符最好重载为类的成员函数;双目运算符则最好重载为类的友元函数。以下一些双目运算符不能重载为类的...

  • 【C++】面向对象之类和对象(下篇)-004

    第四章 类和对象 4.6 运算符重载 4.6.1 运算符重载基本概念 运算符重载,就是对已有的运算符重新进行定义,...

  • 运算符重载

    对于内置的数据类,编译器直到如何进行运算 对于自定义数据类型,需要运算符重载 加号运算符重载 左移运算符重载 重载...

网友评论

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

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