C++语言程序设计

运算符<<本是二元运算符，参数应该有两个。但是，上面的例子中，把运算符<<重载为单目运算符，只有一个参数，即要输出的数据。因为运算符<<是ostream的成员函数，编译器自己为它添加了一个参数（即该类的this指针）作为传给函数的第一个参数。如果在类外进行运算符的重载，就要把类（或者它的指针或引用）作为一个参数传给运算符重载的函数。

| 程序12-4

class complex
{
private:
double a;
double b;

public:
complex();
complex(double i, double j);
complex operator +(complex& x);
void setreal(double x);
void setimag(double y);
double getreal();
double getimag();
friend ostream& operator <<(ostream& Out,complex& x);
friend istream& operator>>(istream& In, complex& x);
};

在类中重载了运算符+，只有一个参数。如果在在类外声明应该是这样的：
complex operator +(complex& y, complex& x);
它们在使用时是一样的：
complex a,b,c;
c=a+b;
需要注意的是：上面两个声明不能同时出现在一个文件中，否则会出现编译错误。