运算符重载(1)

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

实验7 运算符重载(1)

实验目的:

1、理解什么是运算符重载;

2、熟悉运算符函数的声明、定义、调用;

3、掌握使用类的成员函数重载运算符方法;

4、掌握使用友元函数重载运算符方法;

5、熟悉算术运算符、关系运算符的重载方法;

6、了解CTime等MFC类中的运算符重载情况。

实验内容

1、复数是大家中学时期就学过的知识,设a+bi 和c+di 是两个复数,则它们的四则运规则如下:

请按下列步骤操作,体会什么是运算符重载,理解实现运算符使用的两种基本方法:

(1) 复制下列代码到开发工具并加以运行,观察整数的+、-运算是否成功?

#include

using namespace std;

class Complex

{

private:

double real,image; //分别为实部、虚部

public:

Complex(double rel=0, double img=0)

{

real=rel;

image=img;

}

void display() //输出(a+b*i) 、(a-b*i) 、(a)等形式

{

cout<<" ("<

if (image>0)

cout<<"+"<

else if (image<0)

cout<

else

cout<<") "; //虚部为,即为实数}

//位置1

};

//位置2

void main()

{

int i1=100, i2=10, i3, i4;

i3=i1+i2;

i4=i1-i2;

cout<<"i1+i2="<

cout<<"i1-i2="<

//位置3

}

(2) 复制下列代码到位置3处,再次编译、运行程序,观察复数的+、-运算是否可行?从中得出什么结论?试说明其中的原因。

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

c3=c1+c2;

c4=c1-c2;

//输出加的结果

c1.display();

cout<<"+";

c2.display();

cout<<"=";

c3.display();

cout<

//输出减的结果

c1.display();

cout<<"-";

c2.display();

cout<<"=";

c4.display ();

cout<

(3) 分别复制下列两段代码到位置1和位置2 处,再次编译、运行程序,观察这次的复数+、-运算能否成功?再次得出什么结论?

代码段1

Complex operator +(Complex & c); //用成员函数重载

friend Complex operator -(Complex & c1,Complex & c2);//用友元函数重载

代码段2

//成员函数的类外定义

Complex Complex::operator +(Complex & c)

{

Complex temp;

temp.real=real+c.real;

temp.image=image+c.image;

return temp;

}

//友元函数的定义

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

{

Complex temp;

temp.real=c1.real-c2.real;

temp.image=c1.image-c2.image;

return temp;

}

(4)分析上述代码,结合小课ppt理解运算符函数的声明、定义、调用,熟悉运算符重载的两种基本方法:使用类成员函数和友元函数,注意它们之间参数的差异。

2、参照上一题的程序,掌握用类成员函数重载运算符的方法

要求:在程序的适当位置填写程序代码,使用成员函数方法实现下列运算符重载:

(1) 复数+ 实数(double) 运算;

(2) 复数* 复数运算。

程序代码:

#include

using namespace std;

class Complex

{

private:

double real,image; //分别为实部、虚部

public:

Complex(double rel=0, double img=0)

{

real=rel;

image=img;

}

void display() //输出(a+b*i) 、(a-b*i) 、(a)等形式{

cout<<" ("<

if (image>0)

cout<<"+"<

else if (image<0)

cout<

else

cout<<") "; //虚部为,即为实数}

Complex operator +(Complex & c); //用成员函数重载

};

//成员函数的类外定义

Complex Complex::operator +(Complex & c)

{

Complex temp;

temp.real=real+c.real;

temp.image=image+c.image;

return temp;

}

void main()

{

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

c3=c1+123.456;

相关文档
最新文档