C++实验5对象成员.docx

上传人:b****4 文档编号:3907835 上传时间:2022-11-26 格式:DOCX 页数:17 大小:215.77KB
下载 相关 举报
C++实验5对象成员.docx_第1页
第1页 / 共17页
C++实验5对象成员.docx_第2页
第2页 / 共17页
C++实验5对象成员.docx_第3页
第3页 / 共17页
C++实验5对象成员.docx_第4页
第4页 / 共17页
C++实验5对象成员.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

C++实验5对象成员.docx

《C++实验5对象成员.docx》由会员分享,可在线阅读,更多相关《C++实验5对象成员.docx(17页珍藏版)》请在冰豆网上搜索。

C++实验5对象成员.docx

C++实验5对象成员

实验5对象成员

1.实习目的及要求

1)理解对象成员的概念;

2)掌握对象成员的初始化方法。

2.实验内容

2.1分析调试程序指出程序运行的结果

1)分析下面程序中的对象传递,写出输出结果。

#include

classA

{

inti;

public:

A(intx)

{i=x;}

intget()

{returni;}

};

intcube(Aa)

{returna.get()*a.get()*a.get();}

voidmain()

{Aa1(10),a2(20);

cout<

cout<

}

程序分析和运行结果如下

A

-i:

int

+A(x:

int)

+get():

int

a1.i<=10;a2.i<=20

a1=>a:

a1.i*a1.i*a1.i=>1000

a2=>a:

a2.i*a2.i*a2.i=>8000

2)分析对象成员的调用,写出程序结果。

#include

classB

{

private:

inta,b;

public:

B(){}

B(inti,intj);

voidshowb();

};

classA

{

private:

Bc;

public:

A(){}

A(inti,intj);

voidshowa();

};

A:

:

A(inti,intj):

c(i,j)

{}

voidA:

:

showa()

{

c.showb();

}

B:

:

B(inti,intj)

{

a=i;

b=j;

}

voidB:

:

showb()

{

cout<<"a="<

}

voidmain()

{

Aa1(5,6);

a1.showa();

}

B

-a:

int

-b:

int

+B(){}

+B(i:

inti,j:

int)

+showb():

void

A

-c:

B

+A()

+A(i:

int,j:

int)

+showa():

void

 

调用A的构造函数A(inti,intj)

调用内嵌对象的构造函数B(inti,intj)

执行a1.c.a<=5,a1.c.b<=6

通过a1.showa()调用c.showb()执行对a1.c.a<=5,a1.c.b<=6

在屏幕上显示

2.2编写并调试程序:

按下面的要求编程并调试:

编写一类Cpoint表示一个点的信息。

在此基础上编写一个表示三角形的类tria,顶点为其对象成员。

编写完整的程序输出三角形的面积。

分析:

三角形面积S=√[P(P-A)(P-B)(P-C)],其中P=(A+B+C)/2

Cpoint

-x:

float

-y:

float

+Cpoit(a:

float,b:

float)

+Cpoint(&p:

Cpoint)

+getx():

float

+gety():

float

tria

-a:

Cpoint

-b:

Cpoint

-c:

Cpoint

+tria(a:

Cpoint,b:

Cpoint,c:

Cpoint)

+area():

float

一开始检测就说我的Cpoint类定义的对象出错,所以我可以肯定是我的Cpoint类定义出了问题,所以我就利用“/*”“*/”的效果先把其他代码屏蔽了直接编译链接Cpoint类的问题并逐一解决。

很快,问题就剩下很少了。

如下图:

接着就是tria类的定义方面有些拼写和粗心的错误,认真地检查了一下再次编译链接就只有一个问题剩下了

最后编码无语法错误:

运行结果如下,结果正确:

代码如下:

#include

#include

usingnamespacestd;

classCpoint{

private:

floatx,y;

public:

Cpoint(floata=0,floatb=0){x=a;y=b;}

Cpoint(Cpoint&p){x=p.x;y=p.y;}

floatgetx(){returnx;}

floatgety(){returny;}

};

classtria{

private:

Cpointa;

Cpointb;

Cpointc;

doubleab,bc,ca;

doublearea;

public:

tria(Cpointp1,Cpointp2,Cpointp3);

doublegetarea();

doubletria:

:

length(Cpointp1,Cpointp2);

};

tria:

:

tria(Cpointp1,Cpointp2,Cpointp3):

a(p1),b(p2),c(p3){}

doubletria:

:

length(Cpointp1,Cpointp2){

doublex=double(p1.getx()-p2.getx());

doubley=double(p1.gety()-p2.gety());

returnsqrt(x*x+y*y);

}

doubletria:

:

getarea(){

ab=length(a,b);

bc=length(b,c);

ca=length(c,a);

doublep=(ab+bc+ca)/2;

area=sqrt(p*(p-ab)*(p-bc)*(p-ca));

returnarea;

}

voidmain(){

Cpointp1(0,0),p2(0,3),p3(4,0);

triaA(p1,p2,p3);

cout<<"三角形的面积是"<

}

*3课后练习

调试下面的程序,指出程序实现的功能及程序输出结果,进一步理解对象成员、友元、静态成员等概念。

1)调试程序1

#include

classB

{

public:

B(){};

B(inti,intj);

voidprintb();

private:

inta,b;

};

classA

{

public:

A(){};

A(inti,intj);

voidprinta();

private:

Bc;

};

A:

:

A(inti,intj):

c(i,j)

{};

voidA:

:

printa()

{

c.printb();

}

B:

:

B(inti,intj)

{

a=i;b=j;

}

voidB:

:

printb()

{

cout<<“a=”<

}

voidmain()

{

Am(7,8);

m.printa();

}

依程序可作一下UML图:

程序调试及运行结果如下:

2)调试程序2

#include

classqueue

{

intq[100];//存放队列中的各个元素

inthead,rear;//head和rear分别为队头、队尾

public:

queue();

voidqput(inti);

intqget();

};

queue:

:

queue()//构造函数

{

head=rear=0;

cout<<“queueinitialized\n”;

}

voidqueue:

:

qput(inti)

{

if(head==100)

{

cout<<“queueisfu11\n”;

return;

}

head++;

q[head]=i;

}

intqueue:

:

qget()

{

if(rear==head)

cout<<“queueisempty\n”;

return0;

}

rear++;

retutnq[rear];

}

voidmain()

{

queuea,b;

a.qput(10);

b.qput(20);

a.qput(19);

cout<

cout<

cout<

cout<

}

分析:

类UML图如下

对象如右图:

由于蓝色标明那部分的成员函数定义出错,所以出现了一下问题:

所以我在实验基础上在if语句那里加了一个打括号,这时程序才运行正确

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

当前位置:首页 > PPT模板

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

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