访问 构造函数 , 并实现该函数 , 使用域操作符 时 , 前面的类 需要指定 具体的泛型类型 , 这里使用 声明的 T 模板类型 作为 具体的 泛型类型 ;
template ...: 后面跟上要访问的成员 ;
最后 , 返回值和参数类型 , 如果是 类模板类型 Student , 需要在后面使用尖括号 指明具体的类型 , 这里具体的类型就是泛型 T ;
函数内部 Student...友元函数 中又用到了 泛型 T , 说明这是一个 模板函数 ;
友元函数 是 全局函数 , 不属于 类模板 , 不要使用 域操作符 访问友元函数 ;
友元函数 中的 泛型类型 , 要当做 函数模板 对待...friend ostream& operatorostream& out, Student& s);
}
在 类外部 实现 友元函数 ,
// Student 类的友元函数
// 左移运算符重载...泛型类型 指明 , 在 函数名称后面 , 使用 注明泛型类型 ,
但是在 类模板 声明 友元函数 时 , 就需要指定 泛型类型 ;
这样才能将 类模板中的 泛型 T , 与 友元函数在 外部实现时