C++实验报告之静态成员、运算符重载

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

题目1:

定义一个复数类,通过重载运算符:*,/,直接实现二个复数之间的乘除运算。编写一个完整的程序,测试重载运算符的正确性。要求乘法“*”用友元函数实现重载,除法“/”用成员函数实现重载。

源程序1

/*******************第1题*******************/

/******************单森汉*****************/

/******************2012-5-1*****************/

#include

using std::cout;

using std::endl;

class Complex{

float Real, Image;

public:

Complex(float r=0,float i=0) { Real=r;Image=i;}

void Show()

{cout <<"Real="<

friend Complex operator *(Complex &, Complex &);

Complex operator /(Complex &); //重载运算符+

Complex operator +( Complex &);

friend Complex operator -(Complex &, Complex &);

};

Complex operator *( Complex &c1,Complex &c2)

{

Complex t;

t.Real=c1.Real * c2.Real - c1.Image * c2.Image;

t.Image = c1.Image*c2.Real +c1.Real* c2.Image;

return t;

}

Complex Complex::operator /(Complex &c)

{

Complex t;

t.Real =(Real *c.Real+ Image * c.Image)/(c.Real*c.Real+ c.Image * c.Image);

t.Image = (Image *c.Real - Real * c.Image)/(c.Real*c.Real+ c.Image * c.Image);

return t;

}

Complex Complex::operator + ( Complex &c)

{

Complex t;

t.Real = Real + c.Real;

t.Image = Image + c.Image;

return t;

}

Complex operator -(Complex &c1, Complex &c2)

{

Complex t;

t.Real=c1.Real-c2.Real;

t.Image=c1.Image-c2.Image;

return t;

}

void main()

{Complex c1(1,2),c2(3,4),c3;

c3=c1*c2;

cout<<"两个复数的乘法c3=c1*c2:";

c3.Show();

c3=c1/c2;

cout<<"两个复数的除法c3=c1/c2:";

c3.Show();

Complex c4(1,2),c5(3,4),c6,c7(1,2),c8(3,0),c9; c6=c4+c5;

cout<<"两个复数的加法c6=c4+c5:";

c6.Show();

c6=c4-c5;

cout<<"两个复数的减法c6=c4-c5:";

c6.Show();

c9=c7+c8;

cout<<"一个复数与一个实数的加法c9=c7+c8:"; c9.Show();

c9=c7-c8;

cout<<"一个复数与一个实数的减法c9=c7-c8:"; c9.Show();

}

运行结果截图

题目2:

定义一个向量(一维数组)类,通过重载运算符实现向量之间的加法和减法。加法用成员函数重载,减法用友元函数重载。

源程序2

/*******************第2题*******************/

/******************单森汉*****************/

/******************2012-5-1*****************/

#include

using std::cout;

using std::endl;

class Vect

{private:

float *p;

int n;

int x;

int y;

public :Vect(int x1,int y1,int num)

{

x = x1;

y = y1;

n = num;

}

Vect(){}

~Vect()

{}

public:

friend Vect &operator - (Vect &a, Vect &b);

Vect operator + (Vect &a)

{

if(a.n == n)

{

return Vect(a.x+x, a.y+y, n);

}

return a;

}

void show(){

cout<<"x="<

}

};

Vect &operator - (Vect &a, Vect &b)

相关文档
最新文档