C++程序设计上机指导书.docx

上传人:b****6 文档编号:8098946 上传时间:2023-05-12 格式:DOCX 页数:11 大小:59.50KB
下载 相关 举报
C++程序设计上机指导书.docx_第1页
第1页 / 共11页
C++程序设计上机指导书.docx_第2页
第2页 / 共11页
C++程序设计上机指导书.docx_第3页
第3页 / 共11页
C++程序设计上机指导书.docx_第4页
第4页 / 共11页
C++程序设计上机指导书.docx_第5页
第5页 / 共11页
C++程序设计上机指导书.docx_第6页
第6页 / 共11页
C++程序设计上机指导书.docx_第7页
第7页 / 共11页
C++程序设计上机指导书.docx_第8页
第8页 / 共11页
C++程序设计上机指导书.docx_第9页
第9页 / 共11页
C++程序设计上机指导书.docx_第10页
第10页 / 共11页
C++程序设计上机指导书.docx_第11页
第11页 / 共11页
亲,该文档总共11页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

C++程序设计上机指导书.docx

《C++程序设计上机指导书.docx》由会员分享,可在线阅读,更多相关《C++程序设计上机指导书.docx(11页珍藏版)》请在冰点文库上搜索。

C++程序设计上机指导书.docx

C++程序设计上机指导书

上机实验指导书

 

课程名称C++程序设计

 

主撰人宋晓宇、刘继飞

审核人栾方军

 

沈阳建筑大学信息学院

2008年3月

 

课程名称:

C++程序设计

上机学时:

16

适用专业:

计算机科学与技术

先修课程:

C语言

一、上机实验总体目标

C++程序设计是为计算机科学与技术专业开设的一门程序设计基础课。

本课程强调动手实践,主要讲授C++语言的基本语法与面向对象程序设计的基础理论知识,作为该课程的重要组成部分,其上机实验是理论运用于实践的教学环节。

通过上机实践,可以使学生更深入地了解C++编程思想,掌握结构化和面向对象的编程方法与技巧,熟悉常用的软件开发环境(如VisualC++),提高学生在程序设计方面和解决实际问题的能力,为学生后续课程的学习及求职就业奠定良好的基础。

二、上机实验课时分配

序号

上机实验项目

实验类型

每组人数

上机学时

1

字符串类的设计与使用

设计

4

2

派生类的设计与使用

设计

4

3

运算符重载

设计

4

4

类模板设计和使用

设计

4

三、上机实验环境

硬件:

CPUP3500Hz,内存256MB,硬盘500MB或以上

软件:

WindowsXPProfessional简体中文版,VisualC++6.0

四、参考书(3种以上)

1、《C++大学教程》,HarveyM.Deitel等著,邱仲潘等译,电子工业出版社2001

2、《C++编程思想》,BruceEckel著,刘宗田等译,机械工业出版社2002

3、《C++精粹》,IraPohl著,王树武等译,机械工业出版社2003

4、《数据结构》,严蔚敏编,清华大学出版社2004

实验1字符串类设计与使用

【实验目的】

1.熟悉C++语言程序的运行环境VisualC++;

2.了解在该集成环境下如何编辑、编译、连接和运行一个C++程序;

3.掌握C++中的面向对象设计的基本知识(类、对象、构造函数等);

4.通过字符串类的设计和使用,初步了解C++程序的基本结构。

【实验准备】

1.类的声明格式:

class类名

{

[private:

]

私有数据成员和成员函数;

public:

公有数据成员和成员函数;

};

2.构造函数和析构函数*

构造函数

析构函数

重载构造函数和拷贝构造函数

3.main函数

由一组相互通信的类对象组成

【实验内容】

1.编写字符串类CTString,设计样式如下:

classCTString

{

char*m_pData;//用于保存字符数据

intm_nLen;//记录字符长度

public:

//构造函数和析构函数

CTString();

CTString(char*);

CTString(constCTString&);

~CTString();

//其它成员函数

CTString*Copy(CTString*,CTString*);//拷贝

CTString*Connect(CTString*,CTString*);//连接

char*Find(CTString*,CTString*);//查找子串

char*Find(CTString*,char);//查找字符

voidPrint();//打印输出字符串内容

……//学生自己扩充成员函数

};

要求学生实现上面成员函数的功能,有能力的同学可以自己扩充类的功能(成员函数)。

2.编写构造函数和析构函数

要求使用new和delete申请内存空间和释放空间,并注意内存泄漏的问题(空间申请不释放)。

3.类的测试

编写类功能测试用的主程序,并显示结果。

【思考题】

1.运行下面的程序,分析结果产生的原因。

#include

voidmain()

{

CTString*pstr;

pstr=newCTString;

pstr->Print();

pstr->Copy(“hello”);

pstr->Print();

}

2. 如何改写这个CTString类,使其能够有记录对象个数的功能?

 

实验2派生类的设计与使用

【实验目的】

1.掌握派生类的设计方法;

2.了解继承的本质和好处;

3.熟悉继承过程中派生方法及访问性质的改变;

4.通过实验加深对C++中继承概念的理解。

【实验准备】

1.派生类的声明格式:

class派生类名:

派生方式基类名

{

//派生类新特性(新增成员)

[private:

]

私有数据成员和成员函数;

public:

公有数据成员和成员函数;

};

2.派生类的构造函数和析构函数*

1)派生类两构函数的执行顺序

2)派生类两构函数的构造规则

3.调整派生类中的访问属性的其他方法

1)同名成员

2)访问声明

【实验内容】

1.设计雇员类CEmpoyee,该类的格式如下:

classCEmpoyee

{

char*m_pName;//姓名

intm_nAge;//年龄

floatm_fSalary;//薪水

public:

//构造函数和析构函数

CEmpoyee(char*pName=NULL,intage=0,floatsalary=0.0);

CEmpoyee(constCEmpoyee&);

~CEmpoyee();

//其它成员函数

voidSetName(char*);

char*GetName();

voidSetAge(int);

intGetAge();

voidSetSalary(float);

floatGetSalary();

voidPrint();//打印输出信息

……//学生自己扩充其它成员函数

};

2.设计管理者类CManager,其的格式如下:

classCManager:

public(private)CEmployee

{

intm_nLevel;//级别

public:

//构造函数和析构函数

CManager(char*pName=NULL,intage=0,floatsalary=0.0,);

CEmpoyee(constCEmpoyee&,float);

~CEmpoyee();

//其它成员函数

voidSetLevel(int);

intGetLevel();

voidPrint();//打印输出信息

……//学生自己扩充其它成员函数

};

3.编写主函数或者其它函数来测试CEmpoyee和CManager两类的性质和功能。

声明两个类的对象,观察两者的内存结构(有哪些数据成员?

各占多少字节?

)。

CManager定义时使用多种派生方式,然后用CManager对象使用其成员,观察private和public访问控制性质的变化。

【思考题】

1.每个类都有显式或隐式的构造函数和析构函数。

派生类中有一个隐含的基类对象,如何对这个对象进行初始化或销毁?

2.有两个类:

classX

{

inta,c;

public:

voidprint();

};

classY:

publicX

{

intb,c;

public:

voidprint()

{

print();//要使用从X那继承过来的print

}

};

Y类中的print函数能正常运行吗?

为什么?

实验3运算符重载

【实验目的】

1.通过在复数类CComplex中对+,-,*,/,=,[]等运算符进行重载的设计,掌握运算符重载;

2.通过虚函数进一步了解C++多态的特性和作用。

【实验准备】

1.多态性的概念

1)多态性的概念

2)多态性的实现

2.函数重载

1)普通函数重载

2)类的成员函数重载

3.运算符重载

1)运算符重载

2)一般运算符函数(友元)

3)成员运算符重载

4)调用方式

4.虚函数

1)虚函数的概念

2)虚函数的定义和使用

【实验内容】

1.实现一个CComplexclass(数学里的复数),练习运算符的重载。

要求具有以下操作:

构造函数

拷贝构造函数

operator=

operator*

operator+

operator-

operator/

operator==

operator[]

operator!

=

其中,复数类的实部和虚部的取值类型为float。

2.用一个简单的程序,使用CComplex的各个成员函数和运算符。

3.在CComplex中编写若干个虚函数,观察类对象有无虚函数内存结构的变化。

【思考题】

1.C语言为什么不支持函数重载,而C++却支持?

2.->和()两个运算符如何实现重载?

3.C++实现虚函数的内存结构有什么好处?

实验4类模板设计和使用

【实验目的】

1.掌握C++模板的设计方法;

2.了解模板的机制和好处;

3.同时复习数据结构中的知识。

【实验准备】

1.函数模板的定义格式:

template

返回类型函数模板名(参数表)

{

使用Type的函数模板定义体

}

2.类模板的定义格式:

template

class类模板名

{

类模板的定义体

};

template

返回类型类模板名:

:

函数模板名(参数表)

{

类模板中成员函数模板的定义体

}

【实验内容】

1.设计数据结构中链栈的类模板(链表形式的栈)

template

classLinkStack

{

//…

};

栈模板{}中的内容参照数据结构教材自己设计。

2.编写main函数等测试模板类。

3.有能力的同学可以选作一下附加题。

【附加题】

使用基类管理一个时钟的列表(可以使用标准模板库中STL中的vector)。

基类CTimer,他提供了基本的接口外,还提供了一个功能GetTimeZone,主要是取得时区,同时打印自己所在时区的字符串。

返回值可以是时区的代号。

这是一个虚函数,每个子类必须重载它。

子类继承于CTimer,比如CBeijingTimer.

每个Timer的对象有一个编号(可以是一个无符号的long或short),以方便在全局中区分每个Timer对象。

基类提供一个纯虚函数GetTimerID来取得Timer的编号。

用户界面可以随时创建一个Timer,并且可以根据TimerID随时删除一个Timer,可以以查询当前所有创建的Timer,可以查看指定TimerID的时区情况。

创建Timer时使用基类的指针保存子类对象的地址,使用STL的vector来保存。

【思考题】

定义一个数组类模版,然后以它为基类模板,如何定义一个派生类模板?

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

当前位置:首页 > 求职职场 > 简历

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

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