C++实验报告模版.docx

上传人:b****5 文档编号:7373589 上传时间:2023-01-23 格式:DOCX 页数:43 大小:691.95KB
下载 相关 举报
C++实验报告模版.docx_第1页
第1页 / 共43页
C++实验报告模版.docx_第2页
第2页 / 共43页
C++实验报告模版.docx_第3页
第3页 / 共43页
C++实验报告模版.docx_第4页
第4页 / 共43页
C++实验报告模版.docx_第5页
第5页 / 共43页
点击查看更多>>
下载资源
资源描述

C++实验报告模版.docx

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

C++实验报告模版.docx

C++实验报告模版

实验报告

 

实验课程:

C++语言程序设计

学生姓名:

学号:

61004102

专业班级:

计科103班

 

2012年12月12日

第2章C++简单程序设计

实验1面向对象C++简单程序相关测试3

第3章函数

实验2面向对象C++第三章‘函数’相关测试20

第4章类与对象

实验3.1类与对象37

实验3.2长方形类测试37

第5章C++程序的结构

实验4.1掌握静态成员41

实验4.2数组对象41

实验4.2友元类、友元函数41

第6章数组、指针与字符串

实验5.1掌握数组的基本使用方法53

实验5.2练习通过动态内存分配实现动态数组,并体会指针在其中的作用53

第7章继承与派生

实验6.1虚基类测试57

实验6.2派生类构造函数,析构函数57

实验6.3书上习题57

第8章多态性

实验7运算符重载实例64

南昌大学实验报告

---(3)第四章实验

学生姓名:

学号:

6100410235专业班级:

计科103班

实验类型:

□验证□综合■设计□创新实验日期:

实验成绩:

一.实验内容

1、类与对象

2、长方形类

二.实验环境

PC微机,Windows操作系统,VisualC++6.0

三.实验代码

类与对象:

#include

#include

usingnamespacestd;

classPoint

{

public:

Point(intxx=0,intyy=0)

{

X=xx;Y=yy;countP++;

cout<<"第"<

cout<<""<

}

Point(Point&p);

~Point()

{

countP--;

cout<<"第"<

cout<<""<

}

intGetX(){returnX;}

intGetY(){returnY;}

//voidGetC(){cout<<"Objectid="<

private:

intX,Y;

staticintcountP;

};

Point:

:

Point(Point&p)

{

X=p.X;

Y=p.Y;

countP++;

cout<<"第"<

cout<<""<

}

//类的组合

classLine

{

public:

Line(Pointxp1,Pointxp2);

Line(Line&L);

doubleGetLen(){returnlen;}

private:

Pointp1,p2;

doublelen;

};

//组合类的构造函数

Line:

:

Line(Pointxp1,Pointxp2):

p2(xp2),p1(xp1)

{

cout<<"Line构造函数被调用"<

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

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

len=sqrt(x*x+y*y);

}

//组合类的拷贝构造函数

Line:

:

Line(Line&L):

p2(L.p2),p1(L.p1)

{

cout<<"Line拷贝构造函数被调用"<

len=L.len;

}

intPoint:

:

countP=0;

//主函数

intmain()

{

Pointmyp1(1,1),myp2(4,5);

Lineline(myp1,myp2);

Lineline2(line);

cout<<"Thelengthofthelineis:

";

cout<

cout<<"Thelengthoftheline2is:

";

cout<

getchar();

return0;

}

长方形类:

#include

#include

usingnamespacestd;

classPoint

{

public:

Point(intxx=0,intyy=0){X=xx;Y=yy;}//Point类构造函数

Point(Point&p){X=p.X;Y=p.Y;}//Point类拷贝构造函数

intGetX(){returnX;}

intGetY(){returnY;}

private:

intX,Y;

};

//类的组合

classRectangle

{

public:

Rectangle(Pointxp1,Pointxp2);//组合类的构造函数

doubleArea();//求面积函数

private:

Pointp1,p2;

};

//组合类的构造函数

Rectangle:

:

Rectangle(Pointxp1,Pointxp2):

p1(xp1),p2(xp2)

{

}

//求面积函数

doubleRectangle:

:

Area()

{

return(p1.GetX()-p2.GetX())*(p1.GetY()-p2.GetY());

}

voidmain()

{

Pointmyp1(8,5),myp2(6,1);//建立Point类的对象

RectangleRec(myp1,myp2);//建立Rectangle类的对象

cout<<"长方形的面积为:

"<

getchar();

}

四.实验结果

功能实现:

南昌大学实验报告

---(4)第五章实验

学生姓名:

学号:

6100410235专业班级:

计科103班

实验类型:

□验证□综合■设计□创新实验日期:

实验成绩:

一、实验内容

1、静态数据成员

2、静态函数成员

3、对象数组

4、友元类,友元函数测试

二、实验环境

PC微机,Windows操作系统,VisualC++6.0

三、实验代码

静态数据成员:

#include

#include

usingnamespacestd;

classPoint

{

public:

Point(intxx=0,intyy=0){X=xx;Y=yy;countP++;}

Point(Point&p);

~Point(){countP--;}

intGetX(){returnX;}

intGetY(){returnY;}

voidGetC(){cout<<"Objectid="<

private:

intX,Y;

staticintcountP;

};

Point:

:

Point(Point&p)

{

X=p.X;

Y=p.Y;

countP++;

}

intPoint:

:

countP=0;

//主函数

intmain()

{

PointA(4,5);

cout<<"PointA,"<

A.GetC();

PointB(A);

cout<<"PointB,"<

B.GetC();

getchar();

return0;

}

静态函数成员:

点类:

#include

usingnamespacestd;

classPoint

{

public:

Point(intxx=0,intyy=0){X=xx;Y=yy;countP++;}

Point(Point&p);

~Point(){countP--;}

intGetX(){returnX;}

intGetY(){returnY;}

staticvoidGetC(){cout<<"Objectid="<

private:

intX,Y;

staticintcountP;

};

主文件1:

#include"point.h"

inti1=3;

staticinti2=3;

voidother1();

voidother2();

voidfun1();

externvoidfun2();

externvoidfun3();

voidfun3()

{

cout<<"文件1中的函数fun3()被调用!

"<

}

intmain()

{

PointA(4,5);

cout<<"PointA,X="<

A.GetC();

PointB(A);

cout<<"PointB,X="<

Point:

:

GetC();

cout<<"我在这个文件中定义了一个整型变量i1,它具有文件作用域,此时它的值为:

"<

cout<<"接着调用函数other1()"<

other1();

cout<<"我在此还定义了一个整型变量i2,但给它加了static修饰,此时它的值为:

"<

cout<<"接着调用函数other2()"<

other2();

fun1();

fun2();

fun3();

cout<<"为什么在这里输出的是‘文件2中的函数fun3()被调用!

’而不是‘文件1中的函数’"<

cout<<"fun3()被调用!

因为文件2中fun3()前加了static修饰,就将函数的作用域限制在了"<

cout<<"当前的编译单元,在文件1中不可见!

也就不能被文件1中的main函数调用了,同时"<

cout<<"我还在文件1中定义了一个同名函数fun3(),但其输出的内容不一样,可用来判断"<

cout<<"到底是哪个文件中函数被调用!

实验证明是文件1中函数被调用!

"<

 

cout<<"上面的两个例子说明了一个问题,那就是‘加了static修饰的变量和函数只能在本"<

cout<<"文件中执行和调用,不能再在外部文件中被调用,即使是加了extern修饰也不行!

’"<

getchar();

return0;

}

主文件2:

#include"point.h"

intPoint:

:

countP=0;

Point:

:

Point(Point&p)

{

X=p.X;

Y=p.Y;

countP++;

}

externinti1;

voidother1()

{

i1++;

cout<<"函数other1()被调用,i1的值为:

"<

cout<<"(这里的函数other1()是在另一个.cpp文件中定义的,对i1自加1)"<

}

externinti2=2;

voidother2()

{

i2++;

cout<<"函数other2()被调用,i2的值为:

"<

cout<<"(这里的函数other2()是在另一个.cpp文件中定义的,对i2自加1)"<

cout<<"为什么在这里i2的值是3而不是4呢?

"<

cout<<"因为在other2()这个文件中,给i2指定值为2,加1后当然为3了"<

cout<<"那为什么在这里要给i2指定值呢?

"<

cout<<"因为在这个文件中用extern声明i2连接时会出错,i2在文件1中声明为static类型,"<

cout<<"不能被外部文件引用!

"<

}

voidfun1()

{

cout<<"文件2中的函数fun1()被调用!

"<

}

voidfun2()

{

cout<<"文件2中的函数fun2()被调用!

"<

}

staticvoidfun3()

{

cout<<"文件2中的函数fun3()被调用!

"<

}

对象数组:

员工类:

classemployee

{

protected:

intindividualEmpNo;

intgrade;

floataccumPay;

staticintemployeeNo;

public:

employee();

~employee();

voidpromote(int);

voidSetaccumPay(float);

intGetindividualEmpNo();

intGetgrade();

floatGetaccumPay();

};

Main1:

#include

#include"employee.h"

usingnamespacestd;

intemployee:

:

employeeNo=1000;

employee:

:

employee()

{

individualEmpNo=employeeNo++;

grade=1;

accumPay=0.0;

}

employee:

:

~employee()

{

}

voidemployee:

:

promote(intincrement)

{

grade+=increment;

}

voidemployee:

:

SetaccumPay(floatpa)

{

accumPay=pa;

}

intemployee:

:

GetindividualEmpNo()

{

returnindividualEmpNo;

}

intemployee:

:

Getgrade()

{

returngrade;

}

floatemployee:

:

GetaccumPay()

{

returnaccumPay;

}

Main2:

#include

#include"employee.h"

usingnamespacestd;

voidmain()

{

employeea[4];

floatpa;

for(inti=0;i<4;i++)

{

cout<<"请输入下一个雇员的月薪:

";

cin>>pa;

a[i].promote(i+1);

a[i].SetaccumPay(pa);

}

cout<<"\t编号\t级别\t月薪"<

for(inti=0;i<4;i++)

{

cout<<"\t"<

}

}

友元类测试:

Class类:

#include

usingnamespacestd;

classX;//前向引用声明

classY//定义一个类Y

{

public:

voidg(X&x);

};

classX//定义一个类X

{

public:

friendvoidY:

:

g(X&x);//类Y的成员函数是类X的友元函数

friendclassZ;//类Z是类X的友元类

friendvoidh(X&x);//普通函数h(X&x)是类X的友元函数

X(intI){i=I;}

intGeti()

{

returni;

}

private:

inti;

};

//Y的成员函数f(X&x)的实现部分

voidY:

:

g(X&x)

{

x.i++;

cout<

}

classZ//定义一个类Z

{

public:

voidf(X&x);

};

//Z的成员函数f(X&x)(也是类Y的友元函数)的实现部分

voidZ:

:

f(X&x)

{

x.i+=5;

cout<

}

//函数h(X&x)的实现部分

voidh(X&x)

{

x.i+=10;

cout<

}

Main文件:

#include

usingnamespacestd;

#ifndefclass_h

#defineclass_h

#include"class.h"

#endif

intmain()

{

Xmyx

(1);

Ymyy;

Zmyz;

cout<<"myx.i的初始值:

"<

cout<<"执行函数g(x)后,myx.i的值:

";

myy.g(myx);

cout<<"执行函数f(x)后,myx.i的值:

";

myz.f(myx);

cout<<"执行函数h(x)后,myx.i的值:

";

h(myx);

getchar();

return0;

}

友元函数测试2:

Main文件:

#include

usingnamespacestd;

classcar;//前向引用声明

classboat//定义一个类boat

{

public:

friendinttotalweight(car&c,boat&b);

boat(intw){weight=w;}

private:

intweight;

};

classcar//定义一个类car

{

public:

friendinttotalweight(car&c,boat&b);

car(intw){weight=w;}

private:

intweight;

};

//boat和car的友元函数totalweight的实现,计算二者的重量和

inttotalweight(car&c,boat&b)

{

returnc.weight+b.weight;

}

intmain()

{

carC(1000);

boatB(1234);

cout<<"Thetotalweightofthecarandtheboatis:

"<

getchar();

return0;

}

四、实验结果

功能实现:

静态数据成员:

友元函数测试2:

 

静态函数成员:

对象数组:

友元函数测试1:

 

南昌大学实验报告

---(5)第六章实验

学生姓名:

某同学学号:

6100410235专业班级:

计科103班

实验类型:

□验证□综合■设计□创新实验日期:

实验成绩:

一、实验内容

1、掌握数组的基本使用方法。

2、练习通过动态内存分配实现动态数组,并体会指针在其中的作用。

二、实验环境

PC微机,Windows操作系统,VisualC++6.0

三、实验代码

使用对象数组的方法改造“employee”函数的对象。

代码如下:

//employee.h

classemployee

{

protected:

intindividualEmpNo;

intgrade;

floataccumPay;

staticintemployeeNo;

public:

employee();

~employee();

voidpromote(int);

voidSetaccumPay(float);

intGetindividualEmpNo();

intGetgrade();

floatGetaccumPay();

};

//employee.cpp

#include

#include"employee.h"

usingnamespacestd;

intemployee:

:

employeeNo=1000;

employee:

:

employee()

{

individualEmpNo=employeeNo++;

grade=1;

accumPay=0.0;

}

employee:

:

~employee()

{

}

voidemployee:

:

promote(intincrement)

{

grade+=increment;

}

voidemployee:

:

SetaccumPay(floatpa)

{

accumPay=pa;

}

intemployee:

:

GetindividualEmpNo()

{

returnindividualEmpNo;

}

intemployee:

:

Getgrade()

{

returngrade;

}

floatemployee:

:

GetaccumPay()

{

returnaccumPay;

}

//5_11.cpp

#include

#include"employee.h"

usingnamespacestd;

voidmain()

{

employeea[4];

floatpa;

for(inti=0;i<4;i++)

{

cout<<"请输入下一位雇员的月薪";

cin>>pa;

a[i].promote(i+1);

a[i].SetaccumPay(pa);

}

cout<<"\t编号\t级别\t月薪"<

for(inti=0;i<4;i++)

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

当前位置:首页 > 高中教育 > 英语

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

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