关于模板类中输入输出运算符的重载

    当输入输出运算符在头文件中写时,如果没有#include 和using namespace std;程序将会有100多个bug;当输入输出运算符重载为模板类的友元函数时,如果只是在类体中写为ostream& operator<<(ostream& out,MyClass& c),编译时将会出现连接错误,解决方法有多种,我只掌握了两种:

1.不使用运算符重载的方式,直接定义两个Input,Output函数来达到目的

2.改变友元与模板类的对应关系为多对多

如以下代码:

template

class Myclass

{

private:

........

public:

.........

template

friend ostream& operator<<(ostream& out,Myclass m);

}

.........

template

ostream& operator<<(ostream& out,Myclass m)

{

.....

}

以上两种方法可以解决这种问题

你可能感兴趣的:(关于模板类中输入输出运算符的重载)