c++实验指导书.docx

上传人:b****8 文档编号:10064200 上传时间:2023-05-23 格式:DOCX 页数:31 大小:515.86KB
下载 相关 举报
c++实验指导书.docx_第1页
第1页 / 共31页
c++实验指导书.docx_第2页
第2页 / 共31页
c++实验指导书.docx_第3页
第3页 / 共31页
c++实验指导书.docx_第4页
第4页 / 共31页
c++实验指导书.docx_第5页
第5页 / 共31页
c++实验指导书.docx_第6页
第6页 / 共31页
c++实验指导书.docx_第7页
第7页 / 共31页
c++实验指导书.docx_第8页
第8页 / 共31页
c++实验指导书.docx_第9页
第9页 / 共31页
c++实验指导书.docx_第10页
第10页 / 共31页
c++实验指导书.docx_第11页
第11页 / 共31页
c++实验指导书.docx_第12页
第12页 / 共31页
c++实验指导书.docx_第13页
第13页 / 共31页
c++实验指导书.docx_第14页
第14页 / 共31页
c++实验指导书.docx_第15页
第15页 / 共31页
c++实验指导书.docx_第16页
第16页 / 共31页
c++实验指导书.docx_第17页
第17页 / 共31页
c++实验指导书.docx_第18页
第18页 / 共31页
c++实验指导书.docx_第19页
第19页 / 共31页
c++实验指导书.docx_第20页
第20页 / 共31页
亲,该文档总共31页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

c++实验指导书.docx

《c++实验指导书.docx》由会员分享,可在线阅读,更多相关《c++实验指导书.docx(31页珍藏版)》请在冰点文库上搜索。

c++实验指导书.docx

c++实验指导书

面向对象程序设计

实验指导书

黄建灯朱震

 

桂林电子科技大学信息科技学院

二〇一一年八月

目录

实验一熟悉VisualC++开发环境学会最简单的开发2

实验二类和对象

(一)5

实验三类和对象

(二)7

实验四String类的定义和使用10

实验五String类的定义和使用(续)12

实验六继承与派生14

实验七多态性与虚函数15

第八章输入输出流16

参考文献17

附录AC++保留字18

附录B运算符优先级19

附录CASCII字符集20

附录D运算符重载21

附录EANSI/ISO标准C++和标准C++中头文件命名规则22

附录FC++头文件23

附录G系统中数据类型长度28

实验一熟悉VisualC++开发环境学会最简单的开发

1.实验目的

熟悉VisualC++的开发环境;

了解如何编辑、编译、链接和运行一个C++程序;

2.实验内容

2.1熟悉VisualC++开发环境,学会创建一个新的工程;

1)进入系统,启动VisualC++环境;

2)创建一个新的工程

在VisualC++环境中,菜单File->New...,弹出一个对话框,提示新建(new);

弹出的对话框TAB缺省在Projects页面上,选择该页面的“Win32ConsoleApplication”,在右边的Projectname输入框中输入工程名字,点击“OK”弹出新建工程向导;

3)新建向导的第一步,要求选择:

●空白工程;

●简单应用程序;

●HELLOWORLD应用程序;

●支持MFC的应用程序;

这里我们首先选择第二项:

简单应用程序,点击“finish”。

4)工程建立完成,在开发环境左侧的TAB页面中,查看ClassView和FileView内都能看到什么?

在类视图中可以看到,“简单应用程序”只有一个全局函数main,这也是应用程序的入口,和C语言中的main函数含义相同。

在文件视图中可以看到,开发环境为“简单应用程序”提供了标准全局文件“StdAfx.h”和“StdAfx.cpp”,同时提供了应用程序的源文件ProjectName.cpp。

分别点击这三个文件,可以看到源代码只是给出了程序的框架。

5)在VisualC++环境中,关闭刚才新建的文件和工程,则没有了当前激活窗口,视图呈现灰色;

6)选中菜单File->RecentFiles,可以看到刚才新建的源文件,选中,则该源文件被打开。

这里可以保存最近使用过的4个(该参数可修改)文件,以便下次快捷打开。

7)选中菜单File->RecentWorkspaces,可以看到刚才新建的工程,选中,则该工程被打开。

这里可以保存最近使用过的4个(该参数可修改)工程,以便下次快捷打开。

2.2打开一个工作区

如果打开刚刚关闭的workspace,可以利用菜单中的recentworkspace;

如果要打开的workspace在recent中已经看不到了,就需要在“打开文件对话框”中,找到工作区的存放位置。

1.点击菜单File->Open...,弹出打开文件对话框;

2.找到工作区在磁盘上的存放位置;一般都有一个和工作区名字相同的文件夹,存放工作区文件、该工程的头文件、源文件和资源文件等等。

3.工作区文件是一个以.dsw为后缀的文件,因此在文件类型过滤中要注意包含;

4.看到打开文件对话框中有projectname.dsw,点击即可。

2.3编译运行“简单应用程序”,看看这个程序框架提供了什么?

1)编译有三种方法:

单击工具栏当中的Build图标;

单击菜单Build->Build;

使用快捷键F7;

2)运行有三种方法:

单击工具栏当中的Run图标;

单击菜单Build->Run;

使用快捷键F5;

“简单应用程序”没有提供任何实质性的功能,“pressanykeytocoontinue”就可以退出程序了。

2.4尝试编辑一个小的示范程序,并编译运行;

按照上面的方法新建一个源文件,输入下面代码:

#include

intmain()

{

cout<<”HelloWorld\n”;

cout<<”WelcometoC++Programming\n”;

cout<<”Thisismyfirstcppsourcefile\n”;

return0;

}

2.5了解VisualC++中的调试工具,学会设置断点和单步跟踪;

1)设置断点的方法:

首先将程序编译通过;

将光标置于要设置断点的代码行;

选择工具栏的Breakpoint图标(或者快捷键F9),一个圆点显示在行首,表明该行已经设置了断点,这是个开关动作,重复上述动作,断点被去掉,点击可以在增加断点和去掉断点之间切换;

2)运行程序,到断点处程序中断;

3)尝试单步跟踪,在程序设置断点后,运行进入Debug状态,菜单增加了Debug项,点击菜单Debug->StepOver(或者快捷键F10),每触发一次,程序运行一步;上面的小程序,每运行一步,打印一行,可以观察到单步跟踪的效果;

4)调试工具可以完成以下任务,大家可以在调试时尝试:

设置断点

单步跟踪

监视变量、寄存器和内存

查看汇编代码和调用堆栈

修改代码和变量值

2.6写一个短小的windows程序,体会消息触发机制;

1)创建一个新的“Win32ConsoleApplication”,在选项中选择helloworld应用程序;

2)点击“finish”完成创建工程,可以看到系统提供了程序框架,包括头文件、源文件和资源文件;

3)类视图中可以看到WinMain全局函数和WndProc全局函数;

4)编译运行,看看系统提供的helloworld应用究竟是什么?

5)点击左边的“WndProc”函数,右边的视图就跳到了这个函数相应的位置,在该函数的switch分支中增加:

caseWM_LBUTTONDOWN:

MessageBox(NULL,“pressedtheleftbuttonofmouse!

”,“Message”,NULL);

break;

编译运行,在窗口范围内,点击鼠标左键,看看有什么?

3.思考题

课后自己查资料,结合我们这次实验的实例,了解什么是消息触发机制。

实验二类和对象

(一)

1.实验目的

(1)掌握声明类的方法,类和类的成员的概念以及定义对象的方法。

(2)初步掌握用类和对象编制基于对象的程序。

(3)学习检查和调试基于对象的程序。

2.实验内容

(1)有以下程序:

#include

usingnamespacestd;

classTime

{public:

inthour;

intminute;

intsec;

};

intmain()

{Timet1;

cin>>t1.hour;

cin>>t1.minute;

cin>>t1.sec;

cout<

"<

"<

return0;

}

改写程序,要求:

A)将数据成员改为私有的;

B)将输入和输出功能改为成员函数实现;

C)在类体内定义成员函数。

然后编译和运行程序。

请分析什么成员应指定为公有、什么指定我私有的?

什么函数最好放在类中定义?

什么函数最好放在类外定义?

(2)分别给出如下的3个文件:

A)含类定义的头文件student.h。

//student.h

classStudent

{public:

voiddisplay();

private:

intnum;

charname[20];

charsex;

};

B)包含成员函数定义的源文件student.cpp

//student.cpp

#include

#include"student.h"

voidstudent:

:

display()

{cout<<"num:

"<

cout<<"name:

"<

cout<<"sex:

"<

}

C)包含主函数的源文件main.cpp

//main.cpp

#include

#include”student.h”

intmain()

{Studentstud;

stud.display();

return0;

}

(1)请完善该程序,在类中增加一对数据成员赋值的成员函数set_value。

上机调试并运行。

(3)需要求3个长方柱的体积,请编一个基于对象的程序,数据成员包括length(长)、width(宽)、height(高)。

要求用成员函数实现以下功能:

A)由键盘分别输入3个长方柱的长、宽、高;

B)计算长方柱的体积;

C)输出长方柱的体积。

3.预习内容

《C++面向对象程序设计》第2章。

实验三类和对象

(二)

1.实验目的

(1)进一步加深对类和对象的理解。

(2)掌握类的构造函数和析构函数的概念和使用方法。

(3)掌握是对对象数组、对象的指针、及其使用方法。

(4)掌握友元的概念的使用。

(5)了解类模板的使用方法。

2.实验内容

(1)有以下程序:

#include

classStudent

{public:

Student(intn,floats):

num(n),score(s){}

voidchange(intn,floats){num=n;score=s;}

voiddisplay(){cout<

private:

intnum;

floatscore;

};

voidmain()

{Studentstud(101,78.5);

stud.display()

stud.change(101,80.5);

stud.display();

}

A)阅读此程序,分析其执行过程,然后上机运行,对比输出结果。

B)修改上面的程序,增加一个fun函数,改写main函数。

在main函数中调用fun函数,在fun函数中调用change和display函数。

在fun函数中使用对象的引用(Student&)作为参数。

(2)商店销售某一商品,商店每天公布统一的折扣(discount)。

同时允许销售人员在销售是灵活掌握售价(price),在此基础上,对一次购买10件以上者,还可以享受9.8折优惠。

现已知当天3个销售员销售情况为

销售员号(num)销售件数(quantity)销售单价(price)

101523.5

1021224.56

10310021.5

请编程序,计算出当日此商品的总销售款sum以及每件商品的平均售价。

要求用静态数据成员和静态成员函数。

提示:

将折扣discount,总销售款宿命和商品销售总件数n声明为静态数据成员,

在定义静态成员函数average(求平均售价)和display(输出结果)。

(3)有以下程序:

#include

usingnamespacestd;

classDate;

classTime

{public:

Time(int,int,int);

voiddisplay(Date&);

private:

inthour;

intminute;

intsec;

};

classDate

{public:

Date(int,int,int);

friendvoidTime:

:

display(Date&);

private:

intmonth;

intday;

intyear;

};

Time:

:

Time(inth,intm,ints)

{hour=h;

minute=m;

sec=s;

}

voidTime:

:

display(Date&d)

{cout<

cout<

"<

"<

}

Date:

:

Date(intm,intd,inty)

{month=m;

day=d;

year=y;

}

intmain()

{Timet1(10,13,56);

Dated1(12,25,2004);

t1.display(d1);

return0;

}

分析和运行程序,注意友元函数Time:

:

display的作用。

将程序中的display函数不放在Time类中,而作为类外的普通函数,然后分别在Time和Date类中将display声明为友元函数。

在主函数中调用display函数,display函数分别引用Time和Date两个类的对象的私有数据,输出年、月、日和时、分、秒。

修改后调试运行。

(4)有以下使用类模板程序

#include

usingnamespacestd;

templat

classCompare

{public:

Compare(numtypea,numtypeb)

{x=a;y=b;}

numtypemax()

{return(x>y)?

x:

y;}

numtypemin()

{return(x>y)?

x:

y;}

private:

numtypex,y;

};

intmain()

{Comparecmp1(3,7);

cout<

cout<

<

Comparecmp2(45.78,93.6);

cout<

cout<

Comparecmp3('a','A');

cout<

cout<

return0;}

A)运行此程序,体会类模板的作用。

B)将它改写为在类模板外定义各成员函数。

3.预先内容

《C++面向对象程序设计》第3章。

实验四String类的定义和使用

1.实验目的

在具备C++字符串知识的基础上,将思维转换到面向对象上来,理解和使用String类;

掌握重载运算符函数;

开始理解和关注程序运行中和内存有关的问题;

2.相关知识介绍

2.1String类的介绍

2.2String类的定义

ClassString{

char*str;

intsize;

voidError(interrorType,intbadIndex=0)const;//出错报警函数

public:

String(char*s);

String(constString&s);//复制构造函数

~String(void);

//重载赋值运算符函数

String&operator=(constString&s);//String类的对象赋值

String&operator=(char*s);//字符串赋值给对象

//重载关系运算符函数

intoperator==(char*str,constString&s);

intoperator<(constString&s)const;//判断调用对象是否小于形参

intoperator<(char*str)const;

friendintoperator<(char*str,constString&s);

intoperator>(constString&s)const;

intoperator>(char*str)const;

friendintoperator>(char*str,constString&s);

//重载算术运算符函数

Stringoperator+(constString&s)const;

Stringoperator+(char*str)const;

friendintoperator+(char*str,constString&s);

//将对象转换成C++字符串

operatorchar*(void)const;

//重载输出运算符函数

friendostream&operator<<(ostream&ostr,constString&s);

intLength(void)const;

};//类定义完毕

3.实验内容

阅读String类的知识介绍,以及类的定义。

这个String类的定义涉及到许多面向对象的概念:

构造函数、析构函数、复制构造函数,

重载赋值、关系、算术运算符函数,

对于程序异常的处理:

数组下标越界和内存耗尽

所以对于课堂上学习的内容在实际中的应用,需要仔细琢磨,理解并能够应用。

将类的定义在VisualC++环境下编译,并编译通过。

上面给出的类定义,需要配合环境调试通过,比如包含头文件,修改编辑以及编译错误等。

将String类的定义中的构造函数、析构函数实现

1)实现构造函数String(char*s);

2)实现复制构造函数String(constString&s);

3)实现析构函数~String(void);

4.思考题

String类对象和字符串究竟有什么不同?

面向对象的String类究竟给字符串处理带来了什么优势?

 

实验五String类的定义和使用(续)

1.实验目的

在具备C++字符串知识的基础上,将思维转换到面向对象上来,理解和使用String类;

掌握重载运算符函数;

开始理解和关注程序运行中和内存有关的问题;

2.实验内容

2.1将String类的重载赋值运算符函数实现

1)实现String类的对象赋值String&operator=(constString&s);

2)实现字符串赋值给对象String&operator=(char*s);

2.2将String类的重载关系运算符函数实现

1)实现字符串相等判断函数:

intoperator==(char*str,constString&s);

2)实现调用对象所含的字符串是否小于形参s所含的字符串的判断:

intoperator<(constString&s)const;

3)实现调用对象所含的字符串是否小于形参字符串str的判断:

intoperator<(char*str)const;

4)实现调用形参字符串str是否小于形参s所含字符串的判断:

friendintoperator<(char*str,constString&s);

5)实现调用对象所含的字符串是否大于形参s所含的字符串的判断:

intoperator>(constString&s)const;

6)实现调用对象所含的字符串是否大于形参字符串str的判断:

intoperator>(char*str)const;

7)实现调用形参字符串str是否大于形参s所含字符串的判断:

friendintoperator>(char*str,constString&s);

2.3将String类的重载算术运算符函数实现

8)实现调用对象和形参对象所含的字符串相加

Stringoperator+(constString&s)const;

9)实现调用对象所含的字符串和形参的字符串str相加

Stringoperator+(char*str)const;

10)实现形参字符串str和形参s所含的字符串相加

friendintoperator+(char*str,constString&s);

2.4将String类的出错报警函数实现

11)实现出错报警函数:

voidError(interrorType,intbadIndex=0)const;

出错报警函数能够根据入参传递的错误类型,给出相应的错误告警。

2.5将String类的重载输出运算符函数实现

12)实现重载输出运算符函数

ostream&operator<<(ostream&ostr,constString&s);

完成把s所含的字符串输出到屏幕上。

2.6实现将字符串转换成String对象

13)实现将字符串转换成String对象

operatorchar*(void)const;

2.7实现返回对象所含字符串的长度

14)实现返回对象字符串的长度

intLength(void)const;

2.8检验字符串对象的连接、计算长度和输出

s1=string,s2=class

要求完成连接功能,能够计算字符串的长度,编译运行得到输出:

string和class连接成stringclass

Lengthof“stringclass”=12

2.9检验字符串对象的复制、赋值、输出

1)要求将上面的s1+s2连接得到的字符串赋值到s4当中;

2)再将s4的内容后面增加“inMFCis”;

3)将s4的内容后面连接上“Cstringclass”

4)将s4的内容输出到屏幕上;

按照要求完成程序,编译运行,得到输出:

stringclassinMFCisCstringclass

2.10检验字符串的比较大小

1)任意输入两个字符串

2)将输入的字符串转换成String对象

3)给出比较大小的结果

实验六继承与派生

1.实验目的

(1)了解继承在面向对象程序设计中的重要作用。

(2)进一步理解继承和派生的概念。

(3)掌握通过继承派生出

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

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2