如何用成员函数的方式重载输出操作符<<

来源:百度知道 编辑:UC知道 时间:2024/05/26 05:51:49
如何用成员函数的方式重载输出操作符<< 和输入操作业符>>

最好可给出一个示例代码,谢谢!

我也才学了不久,但是,我记得我看的书上(谭浩强,C++面向对象)说的是提取,和插入运算符只能做为友元函数来重载。
因为正常的重载(成员函数时),比如,
类型名 operator 运算符(参数类型 参数名);
他是将本类的对象,默认成第一个参数了,
调用时,就相当于(比如对象是c1,运算符为'+',后面的参数为c2)c1.operator+(c2);这样,也就可以相当于调用的是c1的成员函数,所以,c1必须是此类的对象。这种可以简写成c1+c2;
而<<和>>都会写成cout<<,cin>>这种形式,
其实,相当于operator <<(cout,对象2),然后把cout提前了,
cout是ostream类的一个对象,和上面类似,也就是,这两个运算符的重载第一个参数,是ostream的对象,或是istream的对象,而第二个参数才是你定义的类的对象。因此,不能用成员函数做重载,只能用做友元,不过vc++6.0中,不加.h的头文件是不支持这种友元重载的,
所以,如果用的是vc++6.0编译的话,可以将#include <iostream>
这种,文件包含改为#include <iostream.h>所有的包含都用带.h的。
然后去掉using namespace std;

#include <iostream>
using namespace std;
class Point
{
int x;
int y;
public:
Point():x(1),y(1){}//构造函数
Point& operator++();//前++
Point operator++(int);//后++
friend Point& operator--(Point& a);//前--
friend Point operator--(Point& a, int);//后--
friend ostream& operator&l