#include "stdafx.h"
#include <string.h>
/*
题目:
根据下列的类的定义,写出加法,乘法二元操作符的友元函数,
而且每一个函数都应返回complex。
并写入一个main函数来测试3+5i和6+2i的加和乘操作。
*/
#include<iostream.h>
class complex{
double real,image;
public:
complex(double r)
{
real=r;
image=0;
}
void assign(double r,double i)
{
real=r;image=i;
}
void print(){cout<<real<<"+"<<image<<"i"<<endl;}
friend complex operator + (const complex &x,const complex &y)
{
complex temp(0);
temp.real= x.real + y.real;
temp.image= x.image + y.image;
return temp;
}
friend complex operator * (const complex &x,const complex &y)
{
complex temp(0);
temp.real=x.real * y.real;
temp.image=x.image*y.image;
return temp;
}
};
int main(int argc, char* argv[])
{
complex ob1(3),ob2(6),ob3(0),ob4(0);
ob1.assign(3,5);
ob2.assign(6,2);
cout<<"************************************"<<endl;
ob1.print();
ob2.print();
cout<<"************************************"<<endl;
//ob2=a+ob1; //整型变量a与类complex对象ob1相加
cout<<"(3+5i)+ (6+2i)= ";
ob3=ob1+ob2;
ob3.print();
cout<<"************************************"<<endl;
cout<<"(3+5i)*(6+2i)= ";
ob4=ob1*ob2; //整型变量a与类complex对象ob1相乘
ob4.print();
}
注:关于构造函数是笔试中就是那样写的,主要是实现友元 运算符重载的那两个函数。