访问 构造函数 , 并实现该函数 , 使用域操作符 时 , 前面的类 需要指定 具体的泛型类型 , 这里使用 声明的 T 模板类型 作为 具体的 泛型类型 ;
template T>...;
友元函数 中的 泛型类型 , 要当做 函数模板 对待 ;
模板函数就涉及到 二次编译 问题 , 下面先分析一下 模板函数 二次编译 导致的 类模板的友元函数 问题 ;
友元函数 不要乱用 , 只有在...重载 左移 右移 操作符时 , 才使用 友元函数 ;
( 1 ) 错误示例及分析 - 类模板 的 外部友元函数 二次编译 问题
在 类模板 内部声明 友元函数 ,
template <typename...( 2 ) 正确写法
友元函数 不要乱用 , 只有在 重载 左移 右移 操作符时 , 才使用 友元函数 ;
这是 函数模板 二次编译 问题 ,
一般情况下 , 函数模板 只有在 调用时 , 才需要将...泛型类型 指明 , 在 函数名称后面 , 使用 注明泛型类型 ,
但是在 类模板 声明 友元函数 时 , 就需要指定 泛型类型 ;
这样才能将 类模板中的 泛型 T , 与 友元函数在 外部实现时