C上机实验Word格式文档下载.doc

上传人:b****1 文档编号:13250120 上传时间:2022-10-08 格式:DOC 页数:8 大小:60KB
下载 相关 举报
C上机实验Word格式文档下载.doc_第1页
第1页 / 共8页
C上机实验Word格式文档下载.doc_第2页
第2页 / 共8页
C上机实验Word格式文档下载.doc_第3页
第3页 / 共8页
C上机实验Word格式文档下载.doc_第4页
第4页 / 共8页
C上机实验Word格式文档下载.doc_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

C上机实验Word格式文档下载.doc

《C上机实验Word格式文档下载.doc》由会员分享,可在线阅读,更多相关《C上机实验Word格式文档下载.doc(8页珍藏版)》请在冰豆网上搜索。

C上机实验Word格式文档下载.doc

5.掌握构造函数和析构函数的作用和编写方法。

6.了解并掌握静态成员、常成员的使用。

二、实验内容与设计思想

1.下面的程序在编译时会出错,请修改程序,使之能正确运行。

然后得到的正确程序分成3个文件。

文件MyClass.h包括类的定义,文件MyClass.cpp包括类成员函数的实现,文件App.cpp包括类的使用。

调试、运行该程序,使之获得正确结果。

#include<

iostream>

usingnamespacestd;

classMyClass{

public:

MyClass(){x=0;

y=0;

}

MyClass(inta=0,b=0);

Print();

private:

intx,y;

};

MyClass:

:

MyClass(inta=0,intb=0){x=a;

y=b;

}

voidMyClass:

Print(){

cout<

<

"

x="

<

x<

endl;

y="

y<

}

intmain(){

MyClassobj1,obj2(5,8);

obj1.x=1;

obj1.y=3;

obj1.Print();

obj2.Print();

return0;

}

实验代码:

MyClass.h

#ifndefMYCLASS

#defineMYCLASS

//MyClass.h头文件的内容

classMyClass{

MyClass(){x=0;

y=0;

}

MyClass(inta=0,intb=0);

voidPrint();

intx,y;

#endif

MyClass.cpp

#include"

MyClass.h"

MyClass(inta,intb){x=a;

y=b;

Print(){

cout<

App.cpp

intmain()

{

MyClassobj1(1,3),obj2(5,8);

2.已知两个矩形的长和宽,用面向对象的概念编程求它们的面积和周长。

假设矩形1的长和宽分别为20和50;

矩形2的长和宽分别为3.6和4.5。

(先定义矩形类再实例化两个对象)

classrectangular{

rectangular(inta,intb)

{

Long=a;

Wide=b;

}

//面积

intArea()

{

returnLong*Wide;

//周长

intPerimeter()

return2*(Long+Wide);

intLong;

//长

intWide;

//宽

rectangularrec1(1,3),rec2(5,8);

矩形1的面积为:

"

rec1.Area()<

endl<

矩形1的周长为:

rec1.Perimeter()<

矩形2的面积为:

rec2.Area()<

矩形2的周长为:

rec2.Perimeter()<

3.下面程序中定义了一个整型动态数组,编写了3个构造函数。

classIntArray{

IntArray(intsz);

//数组初始化为sz个元素,初值全为0

IntArray(int*array,intsz);

//用静态数组array的前sz个元素初始化新数组

IntArray(constIntArray&

rhs);

//拷贝构造函数

voidprintAll();

int*ia;

intsize;

IntArray:

IntArray(intsz){

size=sz;

//设置数据成员

ia=newint[size];

for(intix=0;

ix<

size;

++ix)

ia[ix]=0;

//初始化数组元素

IntArray(int*array,intsz){

ia[ix]=array[ix];

//拷贝数据成员

IntArray(constIntArray&

rhs)

{

size=rhs.size;

for(intix=0;

ix++)

ia[ix]=rhs.ia[ix];

voidIntArray:

printAll()

cout<

ia[ix]<

"

;

cout<

endl;

inta[10]={1,2,3,4,5,6,7,8,9,10};

IntArrayarr1(10),arr2(a,5),arr3(arr2);

arr1.printAll();

arr2.printAll();

arr3.printAll();

(1)为IntArray加上析构函数并编译运行程序,体会类的构造函数和析构函数的作用。

(2)程序中,类IntArray的三个构造函数都是以相似的方式来实现的。

一般来说,当两个或多个函数重复相同的代码时,可将这部分代码抽取出来,形成独立的函数,以便共享。

以后如果需要改变这些实现,则只需改变一次,而且这种实现的共享本质更容易为大家所理解。

怎样把构造函数中的代码抽取出来形成独立的共享函数呢?

请给出一种可能的实现。

按你给出的实现方法修改程序并重新编译运行。

IntArray(int*array,intsz);

IntArray(constIntArray&

rhs);

voidprintAll();

voidcommon(int*array,intsz);

~IntArray(){delete[]ia;

IntArray(intsz){

int*array=NULL;

size=sz;

common(array,size);

IntArray(int*array,intsz){

IntArray(constIntArray&

rhs)

int*array=rhs.ia;

common(array,rhs.size);

for(intix=0;

++ix)

ia[ix]<

common(int*array,intsz)

ia=newint[size];

if(array!

=NULL)

for(intix=0;

ia[ix]=ix+1;

else

ia[ix]=0;

inta[10]={1,2,3,4,5,6,7,8,9,10};

IntArrayarr1(10),arr2(a,5),arr3(arr2);

4.设有一个点myPoint类的定义如下:

classmyPoint{

myPoint(doublex0=0.0,doubley0=0.0):

x(x0),y(y0){}

myPoint(myPoint&

np):

x(np.x),y(np.y){}

doubleGetX(){returnx;

doubleGetY(){returny;

voidSetX(doublex0){x=x0;

voidSetY(doubley0){x=y0;

voidSetPoi

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

当前位置:首页 > 考试认证 > IT认证

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

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