一个由《程序员面试宝典》引出的问题。
描述模板类的友元重载,用C++代码实现?
这实际上考察的是下面几个问题:
1.模板类的编写
2.模板类中友元函数的编写
3.什么时候会用到友元重载?答案是各种C++中的运算符。最典型的就是输出操作符<<了。
书上给出的答案如下:
#include <iostream>
using namespace std;
template<class T> class Test;
template<class T> ostream & operator<<(ostream & out,const Test<T> &obj);
template<class T> class Test{
private:
int num;
public:
Test(int n=0){num=n;}
Test(const Test <T> ©){num=copy.num;}
//注意在“<<”后加上“<>”表示这是一个函数模板
friend ostream& operator<< <> (ostream & out,const Test<T> &obj);
};
template<class T> ostream& operator<<(ostream & out,const Test<T> &obj){
out<&l