中进行运算符重载 , 就需要用到友元函数 ;
如果将 类模板 的 函数实现 , 定义在函数外部 , 结合 友元函数 使用 , 就变得很复杂 , 下面针对该问题进行讨论 ;
二、普通类的运算符重载 -...左移运算符 重载 是在类外部 通过友元函数实现的 , 因为左移运算符的 左操作数是 ostream& 类型的 , 如果定义在了 类内部 , 左操作数就默认为当前类 ;
代码示例 :
#include "...三、类模板的运算符重载 - 函数声明 和 函数实现 写在同一个类中
1、类模板 的 外部友元函数问题
将上述 " 普通类的运算符重载 - 函数声明 和 函数实现 写在同一个类中 " 示例改造成 类模板...示例 ;
问题就出现在 定义在外部的 友元函数 中 ,
友元函数 , 不能 读取 和 访问 到 泛型类型 T , 也就是 类模板 中 的 template 泛型类型 T ;
在外部重新定义...template 就是重新定义了一个新的泛型 , 与 类模板 中的 T 不是同一个泛型类型 ;
解决上述问题 , 就需要将 友元函数 定义在 类模板 的内部 ;
template