24 运算符重载 第二章 C++面向对象程序设计Word格式文档下载.docx

上传人:b****3 文档编号:16762880 上传时间:2022-11-25 格式:DOCX 页数:12 大小:16.55KB
下载 相关 举报
24 运算符重载 第二章 C++面向对象程序设计Word格式文档下载.docx_第1页
第1页 / 共12页
24 运算符重载 第二章 C++面向对象程序设计Word格式文档下载.docx_第2页
第2页 / 共12页
24 运算符重载 第二章 C++面向对象程序设计Word格式文档下载.docx_第3页
第3页 / 共12页
24 运算符重载 第二章 C++面向对象程序设计Word格式文档下载.docx_第4页
第4页 / 共12页
24 运算符重载 第二章 C++面向对象程序设计Word格式文档下载.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

24 运算符重载 第二章 C++面向对象程序设计Word格式文档下载.docx

《24 运算符重载 第二章 C++面向对象程序设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《24 运算符重载 第二章 C++面向对象程序设计Word格式文档下载.docx(12页珍藏版)》请在冰豆网上搜索。

24 运算符重载 第二章 C++面向对象程序设计Word格式文档下载.docx

{

public:

cMatrix(intr,intc)

{

row=r;

col=c;

element=newdouble[row*col];

}

double&

operator()(intx,inty)

{returnelement[col*(x-1)+y-1];

operator()(intx,inty)const

~CMatrix(){delete[]element;

}

private:

double*element;

introw,col;

};

voidmain()

CMatrixm(5,8);

for(inti=;

i<

5;

i++)

m(i,1)=i+5;

for(i=0;

cout<

<

m(i,1)<

”,”;

endl;

运行结果:

5,6,7,8,9,

38、定义一个复数类,通过重载运算符:

=、+=、+、-、*、/,直接实现两个复数之间的各种运算。

编写一个完整的程序(包括测试各种运算符的程序部分)。

提示:

两复数相乘的计算公式为:

(a+bi)*(c+di)=(ac-bd)+(ab+bc)I,而两复数相除的计算公式为:

(a+bi)/(c+di)=(ac+bd)/(c*c+d*d)+(bc-ad)/(c*c+d*d)i。

#include<

iostream>

usingnamespacestd;

classcomplex

public:

complex(inti=0,intj=0):

real(i),image(j)

{}

complex(constcomplex&

a):

real(a.real),image(a.image)

complex&

operator=(constcomplex&

a)

real=a.real;

image=a.image;

return*this;

operator+=(constcomplex&

real=real+a.real;

image=image+a.image;

voiddisplay()

cout<

"

("

<

real<

"

image<

)"

endl;

friendcomplexoperator+(constcomplex&

constcomplex&

);

friendcomplexoperator-(constcomplex&

friendcomplexoperator*(constcomplex&

friendcomplexoperator/(constcomplex&

private:

intreal;

intimage;

complexoperator+(constcomplex&

a,constcomplex&

b)

complexr(a);

r.real+=b.real;

r.image+=b.image;

returnr;

complexoperator-(constcomplex&

complexr;

r.real=r.real-b.real;

r.image=r.image-b.image;

complexoperator*(constcomplex&

c1,constcomplex&

c2)

{

complext;

t.real=c1.real*c2.real-c1.image*c2.image;

t.image=c1.image*c2.real+c1.real*c2.image;

returnt;

complexoperator/(constcomplex&

c2)

t.real=(c1.real*c2.real+c1.image*c2.image)/(c2.real*c2.real+c2.image*c2.image);

t.image=(c2.image*c2.real-c1.real*c2.image)/(c2.real*c2.real+c2.image*c2.image);

intmain()

complexa(32,6);

complexb(23,63);

complexc;

c=a+b;

c.display();

a+=b;

a.display();

c=a-b;

c=a*b;

c=a/b;

return0;

39、定义一个学生类,数据成员包括:

姓名、学号、C++、英语和数学成绩。

重载运算符“<

”和“>

>

”,实现学生对象的直接输入输出。

增加转换函数,实现姓名的转换。

设计一个完整的程序,验证成员函数和重载运算符的正确性。

classstudent

student(char*n="

):

number("

201"

),cpp(0.0),eng(0.0),math(0.0){}

voidset(char*nm,char*num,float_cpp,floatma,float_eng)

name=nm;

mumber=num;

cpp=_cpp;

math=ma;

eng=_eng;

friendostream&

operator<

(ostream&

out,conststudent&

a);

friendistream&

operator>

in,student&

b);

charname[20];

charnumber[20];

floatcpp;

floatmath;

floateng;

ostream&

out<

a.name<

a.number<

a.cpp<

a.math<

a.eng<

;

returnout;

istream&

in>

a.name>

a.number

>

a.cpp>

a.math

a.eng;

studenta;

a.set("

linda"

34,64,64);

a;

studentb;

cin>

b;

40、定义一个平面直角坐标系上的一个点的类CPoint,重载“++”和“--”运算符,并区分这两种运算符的前置和后置运算,构造一个完整的程序。

classCPoint

CPoint(inti=0,intj=0):

x(i),y(j){}

CPoint&

operator++();

//前置

CPointoperator++(int);

//后置

operator--();

CPointoperator--(int);

voiddisplay();

intx;

inty;

CPoint&

CPoint:

:

operator++()

++x;

++y;

operator--()

--x;

--y;

CPointCPoint:

operator++(int)

CPointret(*this);

returnret;

operator--(int)

voidCPoint:

display()

x<

y<

CPointdot1(2,5);

++dot1;

dot1.display();

CPointdot2(1,2);

--dot2;

dot2.display();

CPointdot3(2,2);

dot3++;

dot3.display();

41、在上题的基础上,为其定义友元函数实现重载运算符“+”。

friendCPointoperator+(constCPoint&

a,constCPoint&

CPointoperator+(constCPoint&

CPointt(a);

t.x+=b.x;

t.y+=b.y;

CPointdot4;

dot4=dot1+dot2;

dot4.display();

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 少儿英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1