




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、huqti lanikity qi scrilbct a ncmmoctc卄程序设计实验指导书电气与信息工程学院计算机系2006年2月c+是一门高效实用的程序设计语言,实现了类的封 装、数据隐藏、继承及多态,使得其代码容易维护及高度 可重用,已成为我校电气与信息类专业基础教学的主要内 容。本实验手册是我校c+程序设计课程上机实验指导的 主要依据。根据实验大纲要求,包含八个实验。本手册由陕西科技大学电气与信息工稈学院计算机系 田延安老师执笔,杨云老师审核。由于编写仓促,难免有 错误和不足之处,请各位老师和同学指正。实验1学会简单程序设计1实验2 选择和循环结构6实验3函数8实验4数组、指针及引用
2、11实验5类与对象15实验6对象指针及对象引用18实验7继承性和多态性20实验8运算符重载和文件操作23实验1学会简单程序设计一、实验目的1. 熟悉vc+6.0编程环境,编制简单c+程序并运行,熟悉c+的编辑、 编译、连接和运行过程。2. 掌握c+数据类型,熟悉如何定义和使用常量和变量,以及对它们赋值 的方法。3. 学会使用c+的有关算术运算符及表达式,特别是自加(+)和口减(-)运算符的使用。二、知识耍点1. c+程序开发过程c+的程序结构由注释、编译预处理和程序主体组成。(1) 注释:注释是写程序者为读程序者作的说明与注解,仅供人阅读 程序使用,c+编译器把所有注释都视为空白。(2) 编译
3、预处理:每个以符号“ # ”开头的行,称为编译预处理行。(3) 程序主体:c+用函数组织过程,函数定义是c+程序的主体, 不同的程序由不同的函数按层次结构组织而成。程序主体基本形式main()语句序列程序中的每一个语句应以分号结束。并且可以根据需耍,在程序的 前边或中间的任何位置插入以“ # ”打头的编译预处理命令,为了便于阅读程 序,述可以在程序中的任何位置插入以“/”打头的注释。程序的基本输入、输岀语句为cin>> ;coutvv ;“>>”、“ vv”分别称为输入、输出运算符;“cin”、“cout”分别表示标准 输入、输出设备一一键盘、显示器等'”是输入
4、、输出的内容,称为输入、 输岀表达式。开发一个c+程序,首先熟悉所使用的编程环境,将源程序由键盘输入到 计算机内并进行在线修改,并以文件形式(cpp)保存到磁盘屮,该过程称为 编辑,一个源程序可以分放在几个不同文件中;然后进行编译,作用是将源程 序文件翻译成二进制的目标代码文件(.obj),编译前先要使用编译预处理器, 对源文件进行预处理;接着被编译的目标文件要进行连接,将编译得到的各目 标文件及需要系统提供的文件组成一个具有绝对地址的可执行文件(.exe)o运 行可执行文件便可得到结果。2. 数据类型 c+的数据类型整型int宽字符型char字符型七单字符型w_charc基本数据类型实型单精
5、度型floati逻辑型bool l双精度型double数据类型,数组typeu指针type* 空类型void 非基本数据类型结构struct联合union枚举enum 类 class 常量与变量实型常量:带有小数点的数,float、double等;整型常量:不带小数点的数,int、long int等;字符型常量:用一对单引号描起来的一个或多个字符,如'ai 字符串常量:是括在一对双引号内的字符序列,如”hellos 枚举常量 enum color red, white, green o 变量具有以卜特点:(1)五量是指程详屮使用的一个被命名的存储区域(称程序实体),用以 存放可由程序修
6、改的值,其名称为变量名,其值称为变量值。(2)每个变量应属于一个特定的类型。符号常量:在声明语句中,用const修饰的标识符将指称一个“只读的” 程序实体,称为符号常量,如语句:const float pi=3.1415926c三、实验内容及步骤1. 使用visualc+4-建立一个非图形化标准c+程序,编译、运行以下程序:#include <iostream.h>void main()cout«mhello!nh; cout«"welcome to c4"+!n"具体实验步骤:启动visual c+ 6.0开发环境从"开
7、始”菜单中选择"程序"i microsoft visual studio 6.0 i microsoftvisual c卄6.0,显示visual c+ 6.0开发环境主窗口。(2)创建一个项口单击file菜单中的new选项显示new (新建)对话框(如图11所矛。单击projects标签,在projects (项目)选项卡中,选择win32 console application (win32控制台应用程序)。在location (位置)文木框中指定一" 路径d:c+iab,在preject name (项目名称)文本框中为项fi输入一个名字 “labl_l”,
8、单击ok (确定)按钮。在弹出的 win32 console application-step 1 of 1 对话框中选择 an empty project单选项,然后单击finish (完成)按钮(如图12所示)。最后在new project information对话框中单击ok按钮,完成项目的建立。图*m new对话框图1-2创建控制台应用程序第一步建立c+源程序文件选择菜单命令project i add to project i new,弹出new对话框。如图1-3 所示,在new对话框的files选项卡屮选择c+ source file,并填入文件名称 “labl_l”,单击ok按钮
9、,完成新建c+源程序文件。图1-3添加新的源程序文件(4) 编辑c+源程序文件内容图在文件编辑窗口中输入代码在文件编辑窗口中输入代码(如图14所示)。选择菜单命令file i save保存这个文件。(5) 建立并运行可执行程序选择菜单命令build-> build labl_l.exe建立可执行程序。如果你止确输入 了源程序,此时便成功地生成了可执行程序labl_l.exe。如果程序有语法错误, 则屏幕下方的状态窗口中会显示错误信息。根据这些错误信息对源程序进行修 改后,重新选择菜单命令build i build labl_l.exe ,建立可执行程序。选择菜单命令build i exe
10、cute labl_l.exe运行程序,观察屏幕的显示内容。(6) 关闭工作空间选择菜单命令file i close workspace关闭工作空间。2. 调试并分析教材第16页exl 1 l.cpp,如果令x=100, y=50,计算xy和yx, 并分析结果。3. 运行下面程序,观察其输岀,体会i+与+i的差别。# include<iostream.h>int main()int myage=20,yourage=30;cout«i airtvvmyage;cout«you are «yourage;myage+;+yourage;cout«
11、;one year passes'rt;cout«i airtvvmyage;cout«you are «yourage;cout«another year passesn"cout«i am9,«myage+;cout«you are «+yourage;cout«i airtvvmyage;cout«you are «yourage;return 0;实验2选择和循环结构一、实验目的1. 熟练if和switch选择结构、while和for循环结构及实现循环的方法。
12、2. 掌握在程序设计中用循环的方法实现各种算法(如穷举、迭代、递推等)。二、知识要点c+语句可以分为以下5类:(1) 表达式语句:由一个表达式构成一个语句,最典型的是,由赋值表达式 构成一个赋值语句。例:a=5;(2) 声明语句:一个名字在使用之前必须先声明,以便建立名字与程序实体 之间的映射关系。按声明的程序实体结构对象声明语句可以分为:声明 变量;声明函数;声明对彖。按产生不产生程序实体,声明语句可分为 定义性与引用性两种。(3) 空语句:只有一个分号的语句称为空语句。主要用于语法上要求有-条语句但 实际没有任何操作可执行的场合。(4) 块语句:也称为复合语句或分程序,是括在一对花括号之间
13、的语句序列。 在语法上它相当于一条语句,只是在花括号外不再写分号。块语句主要 在两种情形下使用:语法要求一条语句,但又难以只用一条简单语句表 达的情形;形成局部化的封装体。(5) 流程控制语句 条件语句:if 0else 循环语句:for () 循环语句:while () 循环语句:do while () 结束木次循环语句:continue 终止执行swi tch或循环语句:break 多分支选择语句:switch () easel; case2; default; 从函数返回语句:return三、实验内容及步骤1. 输入并运行下列程序并分析其功能。main() int t,a,b,c,d;c
14、outvv “请输入四个数t;cin»a»b»c»d;cout«4<n排序结果如下:";if (a>b)t=a;a=b;b=t;if (a>c)t=a;a=c;c=t;if (a>d)t=a;a=d;d=t;if (b>c)t=b;b=c;c=t;if (b>d)t=b;b=d;d=t;if (c>d)t=c;c=d;d=t; cout«a«b«c«d;2. 设计程序找出1-100间的质数,显示出来。用for或while或do-while 循环语句实现。
15、3下面程序统计字符数组c中0、1、2及其他字符出现的次数,分别存放 在变量i0、订、i2中,统计结束后输出它们的值。要求:分析岀现结果 的原因,如何修改使结果正确。# include<stdio.h># include<conio.h>void main()char c 三'0123456789001112222”int i0=0,il=0,i2=0,i3=0;for (int i=0;ivl9;i+)switch(c|i)case'0':i0+;case' 1':订+;case'2':i2+; default:i
16、3+;cout«,io=,<<io«endl;cout«?,il ="vv 订 vvendl;cout«,i2=,«i2«endl;cout«,i3=,«i3«endl;getch();实验3函数一、实验目的1. 掌握函数的芦明、调用,及函数名重载的方法;2. 熟悉函数实参与形参的对应关系;3. 能够编制并测试函数。二、知识要点1. 函数结构:函数由函数头与函数体两部分组成函数头函数体函数头类型 函数名(形式参数表列)类型规定为函数返回值的类型,函数名是函数的标识,形式参数农列是括
17、在圆括号中的0个或多个以逗号分隔的形式参数。2. 函数体一个函数体是一个语句块,是用一对花括号封装的语句序列。 形式参数与实际参数定义函数时,函数名后括弧屮的变量称为形式参数。调用函数吋,函 数名后括弧中的变量或表达式称为实际参数。定义时,必须指定形式参数 (形参)的类型。调用函数时,表示实际参数(实参)的表达式类型必须与对 应形式参数(形参)的类型一致。 函数返冋单数返冋由返冋语句return来实现return 表达式;返回的作用:将流程从当前函数返冋其上级(调用函数人撤消函数调用时为各参 数及变量分配的内存空间;向调用函数返冋顶多一个值。 两数名重载多个函数使用同-个函数名。 函数的声明类
18、型 函数名(参数类型1,参数类型2,,参数类型n) 函数的调用函数名(实参表列)3. 函数的嵌套调用:c+的函数不能嵌套定义,但允许嵌套调用。即允许在调用一个函数的过程中又调用另一函数。函数的递归调用:c+不允许在一个函数的函数体里再定义函数,但允许 递归调用。如果函数执行过程屮直接或间接地调用自 己,称为递归调用。4. 局部变量和全局变量(1) 局部变量:在一个函数内部定义的变量,只能在木函数范围内有效。(2) 全局变量:可以为文本文件中其它函数所共用。从定义变量的位置开始到本源文件结束有效。5. 静态存储变量与动态存储变量(1)静态存储变量对于全局变量,在程序开始执行吋就给它分配内存单兀,
19、直到程序终 结吋才释放。它可由本文件和其它文件中的函数所引用。 对于静态外部变量,即冠以static的全局变量,也在编译时分配在静 态存储区,它只在本文件内冇效,其它文件不能引用。 对于局部静态变量,即在局部变量前冠以关键字static的变量,在编 译到它时分配存储单元,直到程序结束才释放。函数调用结束后,变 量保留上一次函数调用结束吋的值。静态局部变量不能被其它函数访问。当全局变量和静态局部变量未赋初值时,系统自动置为0。(2)动态存储变量在程序运行期间根据需要进行动态的分配存储空间的变量。三、实验内容及步骤1. 编制一个函数并实现测试,判断输入年份是否为闰年,在主程序中实现 输入输出。2.
20、 编程求下式的值:r?+r?+r?+n4+r?°,其中,n二1,2, 3。编写函数吋,设置参数n的默认值为2。解:设 f (n) = ni+r?+r?+n'+ "'+n10,则 f (n) =n (1+n (1+n (+)。 实现本题功能的程序如下:#includeiostream. h>int func (int n二2);void main ()cout<<func (1) <</z,"cout<<func () <<,z," cout<<func(3)<<
21、endl;int func(int n)int s=0;for(int i=l;i=10;i+) s=n* (1+s);return s;3. 编制一个递归结构的函数,求1! +2! +3! +4! +15!的值。实验4数组、指针及引用一、实验目的1. 熟悉基木数据类型,及表示形式和取值范围;2. 掌握一维数组和二维数组的定义、赋值和输入输出方法;3. 掌握字符数组和字符串数组的使用;4. 掌握与数组有关的算法(特别是排序算法)。5. 掌握指针的定义、地址和运算;6. 学会数组与指针、函数与指针的使用方法。7. 熟悉引用的声明、特点及参数。二、知识要点1. 一维数组数组定义:类型数组名大小下标
22、是数组元素到数组开始的偏移量。在方扌舌号内使用变量名 是非法的。表达式必须能计算出某个常数值,以便编译程序知 道为该数组保留多大的存储空间。数组初始化:数组可以初始化,即在定义时使它包含程序马上能使用的值, 初始化表达式按元索顺序依次写在一对花括号内。值的个数 不能多于数组元素的个数。数组引用:定义了数组,就可以对数组中的元素进行引用。引用方式为: 数组名下标2. 字符数组初始化两种方法:chararray10=uhellom;或 char array10='h','e',t,t,'o','0'c+中,必须使用字符数组来存储字符串
23、,字符数组中的每个数组 元素存储一个字符,并口最后一个数组元素存储空值字符0,作为字符 出结束标志。a)二维数组c+中的数组可以有多个下标,数组中每个元素需要两个下标來表 示称为二维数组,第一个下标表示该元素所在行,第二个下标表示所在 歹!j。二维数组也可在定义吋初始化。例:int array23= 1,2,3,4,5,6;b)数组应用:排序冒泡排序法、插入排序法、快速排序法。3. 指针类型定义指针变量:建立指针包括定义指针和给指针赋初值。用&操作符可获取变量的地 址,指针变量用于存放地址。间接引用指针:间接引用指针时,可获得由该指针指向的变量内容,既 可用于右值,也可用于左值。指针的
24、运算:与整数相加、减运算;同一数组屮各元索地址间的关系运 算和和减运算;赋值运算。指针变量引用:&取地址运算符;*指针运算符。常见表达式的含义:f:变量pf:指向f的指针变量,其值为f的地址&f:变量f的地址,与pf等价*pf: pf所指向的变量,与f等价*( &f):与*1并(即f)等价& (*pf):与&f (即 pf)等价3. 数组与指针数组名指针如果把任何数组都广义地当作向量,那么,数组名是指向这个广义的 第一个元素的指针,对一维数组來说,它指向第一个数据,对二维数组来说, 它指向第一行,对三维数组来说,它指向第一页。指向数组的指针它与数组名指针
25、不同z处在于,它可以通过赋值指向类型相同的其他 数组元素,而数组名只能固定地指向某i确定的数组的元素。4. 指向指针的指针c+中,可以定义指向其它指针变量的指针变量,这种指针变量小 存储着其它指针变量的地址,因此,称为指向指针的指针。ppxpxxpx是指向变量x的指针,称一级指针;ppx是指向px的指针,称 二级指针。一级指针使用符号“汀,二级指针使用符号“来标识。5. 使用卄和一运算符的特殊问题下面这两条语句执行结果是完全不相同的。* a + = getchar();*+as = getchar();第一条语句把getchar()返冋的字符赋给a所指向的当前单元,然后 递增a;第二条语句首先
26、递增a中的地址,然后把getchar()函数所返回 的字符赋给递增后的地址所指向的单元。运算优先级从右到左。6. 引用引用:把某实体的地址变量(指针)作为该实体的别名的机制。 引用声明类型&引用名二变量名;引用必须初始化,在声明语句中为引用提供的初始値必须是一个变量 或另一个引用。引用是实体的别名:对引用的存取就是对变量的存取;引 用与被引用的实体具有相同的地址。引用参数c+引入引用的主要目的是建立某种类型的虚实体,这种虚实体不占 有实际的存储空间。它作为函数参数时,保证把实体的地址,而不是把实 体本身传递给函数,使用引用使人会觉得宜接而实在。三. 实验内容及步骤1. 把有10个整数元
27、素的数组用冒泡排序法按由小到大升序排列。2. 调试程序。函数fun功能是:实现b=a+a,,即把矩阵a加上a的转置, 存放在b中返冋main函数。例如:输入下面矩阵:其转置矩阵为:程序输出:1231472610456258610147893691014183. 下列程序有何问题,请改正;仔细体会使用指针时应避免岀现的这个问题。 提示:程序屮给*p分配的内存没有被释放掉。#include<iostream.h>int fnl();int main()int a=fnl();cout«mthe value of a isf"«a;return 0;int
28、fnl()int *p=new int (5);return *p;4. 设计一个含有指针类型的程序:定义一个整型变量a, 个整型指针p, 一个引用r,通过p把a的值改为10,通过把a的值改为5。c+实验指导书参考:void main()int a;int *p=&a; int &r二a;& p=10; r=5;实验5类与对象一、实验目的1. 掌握c+类的概念和基木组成,学会设计类,掌握类的使用方法;2. 熟悉各种成员函数包括构造函数、析构函数、内嵌函数的定义与使用;3. 掌握静态数据成员的使用。二、知识耍点1. 黨定殳:客观世界中的事物往往需要从属性与行为两个方面进行
29、描述, 在c+中,分别用数据成员与函数成员來表现,并且将它们封装在一起,形成 一种抽象数据类型类。类具有数据成员和成员函数两种成员,类成员分为公开的(public)和 私有的(private)两类。外界不能访问一个对象的私有部分,它们与对彖 间的信息传送只能通过公开成员函数等特定方法进行。类接口定义的基木格式为class类类型名private:私有成员声明 public:公开成员声明关于接口的说明:(1) 一个类的接口定义由一些声明语句组成。(2) 私有成员只能由类作用域中的函数访问,公开成员是类对象的 信息接口。(3) 关键字class也可以用struct代替。(4) 类定义的最后一个花括号
30、外面的分号不可缺少。类的实现类接口的实现,实际上是耍进一步定义它的成员一成员函数。(1) 在类定义外部定义成员函数时,在成员函数函数头中函数名之 前,应使用作用域限定符“:”指明该函数是哪个类小的成员 函数。定义格式:类型 类名:成员函数名(参数表) 函数体(2) 除特殊指明外,成员函数操作的是同一对象中的数据成员。(3) 成员函数也可以定义为内嵌的。(4) 对一个已经使用的类,可以通过为其增添新的成员函数来修改该类 对象的行为。2. 构造函数:(1) 构造函数具有特定名字一与类相同;(2) 构造函数不能标以返回类型,它的返回值是隐含的;(3) 构造函数在机器执行对象声明语句时被自动调用,去初
31、始化被声明 的对象;(4) 构造函数允许按参数却省调用形式定义;(5) 构造函数名可以重载;(6) 当没有为一个类定义任何构造函数的情况下,c+编译器总要为它 口动建立一个无参的构造函数。析构函数:对彖撤销时被口动调用,释放构造函数分配的空间。函数名,不指定返回类型,不指定参数。复制构造函数:只有一个参数,使所在类的对象的引用,用于一个对 彖初始化另一个对彖。x: x(const x &);对象成员:在类定义中使用的类类型的数据成员,构造函数形式如下 x::x(arg 1, arg2, , argn): memb 1 (arg 1), memb2(arg2),,membn(argn)
32、构造函数体三、实验内容及步骤1. 设计一个birthday类,包含数据成员year> month、day,成员函数print。 和age(),计算年龄并输岀。构造一个birthday的对象进行测试。2. 改止以下程序中的错误,并分析错误原因。提示:该程序中point 类的构造函数定义不正确,在main()中对数据成员的访问不正确。#include<iostream.h>class point int xl, x2;public:point (int x, int y);/-;void main ()point data (5,5);coutdata.xl <<cn
33、dl; cout<<data.x2 << endl;修改如下:#include <iostream.h> class point int xl,x2;public:point (int x, int y)point:xl二x;point:x2=y;void disp ()cout << xl << endl;cout << x2 << endl; /.;void main ()point data (5,5);data, disp ();3. 要求实现课后pl70-4题目。实验6对象指针及对象引用一、实验目的1
34、. 掌握对象指针和对象引用作函数参数。2. 静态成员和友元的使用。二、知识要点1. 常指针常指针有两种方式。其一是地址是常量,其格式如下:类型*const指针名=初值;其二是指向的内容是常量,其格式如下: const类型*指针名=初值 常指针和常引用通常作为函数的参数,可避免在被调用函数中改变调用函 数参数值。2. 引用作函数参数引用说明符&也可以在函数里说明引用类型参数,即引用作函数参数。 对前面的swap函数可以用引用作函数参数,方法如下: void swap (int & a, int & b)int t;t=a;a=b;b二 t;现在如果要交换两个整型变量i和j
35、的值,可用下面的方法调用swap函数: swap(i, j);由于在调用之前已声明了 swap的参数为整型数据的引用,编译器在处理这 个函数调用语句时不再采用传值调用的方式。调用结束后,主调函数中变 量i和j的值已经改变。故在某些情况下需用常引用做参数。3. 静态成员(1) 静态数据成员静态数据成员是类的所有对象屮共享的成员,它不因对象的建立而产生, 也不因对象的失效而删除,它是类定义的一部分,它属于整个类,即属于 所有对象静态数据成员初始化的说明:必须对静态数据成员初始化,并且对它的初始化不能在构造函数屮进行。 初始化在类体外进行,其前面不要加static0初始化时不加该成员的访问权限控制符
36、private、public或protectedo 即使静态数据成员是私有的,也可以在类外有文件作用域的地方直接初始 化,一般应在类的定义之后马上初始化。引用公有的静态数据成员时应釆用下面的形式:数据类型类名:静态数据成员二值;(2)静态成员函数静态成员函数的定义和其他成员函数一样。但它的特点与静态数据成员类 似,也是不专属于任何一个对象,为整个类所共享。静态成员函数的定义方法 是在一般成员函数的定义前加上static关键字。调用静态成员函数的格式一般采用如下形式:类名::静态成员函数名(参数表);例女口: string: change cos ();静态成员函数只能访问静态数据成员、其他静态
37、成员函数和类以外的函数 与数据,不能访问类中的非静态数据成员,因为非静态数据成员只有对象存在 时才有意义。静态成员函数不得说明为虚函数。4. 友元友元不是成员函数,但是它可以访问类中的私有成员。 友元可以是一 个函数,称z为友元函数;友元也可以是一个类,该类被称为友元类。下面分 别介绍这两种友元。(1)定义友元函数的方式是在类定义中用关键字friend说明该函数。其格式如下:friend类型友元函数名(参数表);友元类:一个类可以作另一个类的友元(2)友元类的所有成员函数都是另一个类的友元函数友元类的定义:friend class类名二、实验内容设计一个sample类,它有一个私有数据成员n,
38、建立该类的4个对象,即 si (n=10) s2 (n二20)、s3 (n二30)、s4 (n二40),建立一个成员函数实现这些 对彖n值的累加,但要求不使用静态数据成员和友元函数,而且对彖自己不能 与自己相加。提示:引用作参数或指针作参数。实验7继承性和多态性一、实验目的1. 掌握派生的类别与方式;2. 了解派生类中如何使用基类的成员、基类成员在派生类中的访问控制;3. 掌握多基继承的使用,访问方法;4. 理解类层次中访问规则;5. 掌握虚函数的定义及使用,对多态性的支持;二、知识要点1. 派生类class派生类名:派生方式 基类名private:新增私有成员声明语句表列 public:新增
39、公开成员声明语句表列派生特点:基类派生类public派生publicprotectedprivatepublicprotectedprivate&privateprivate 派生publicprotectedprivateprivateprivateprivate&privateprotected 派生publicprotectedprivateprotectedprivateprivate&private2. 派生类的构造函数y:y(argxl, argx2, , argyl, argy2, ): x(argxl, argx2,)注:派生类的构造函数要直接调用基类的
40、构造函数。构造函数与释放 函数是不能继承的,对派生类必须重新定义构造函数与释放函数。多基派生构造函数:d:d(参数表1,参数表2,,参数表n):b1(参数表1), b2(参数表2),bn(参数表n) 函数体3. 多基派生class d:派生方式ib】,派生方式2b2, ,派生方式n b. ;class派生类名:virtual派生方式 基类名 ;4. 多态性与虚函数一个接口,多种方法。virtual函数类型函数名.virtual可以将public或protected部分的成员函数声明为虚函数; 一个虚函数属于它所在的类层次结构,不只属于某一类;不能把虚函 数声明为静态的或全局的,也不能把友元说明
41、为虚函数,但虚函数可 以是另一个类的友元函数。5. 纯虚数声明virtual类型 函数名(参数列表)=0;三. 设计内容及要求1. 设计内容利用继承性和多态性编写一个小型公司的工资单管理系统。设公司现有经理、销售经理、销售员和兼职技术员,他们的月新的计算方 法是:经理,5000元底薪加其管辖部门当月营业额的5%。提成;销售经理,2000 元底薪加其所管辖部门当月销售额的1%提成;销售员,300元底薪加其当月 销售额的4%提成;兼职技术员按每小时50元提成。2. 要求:设计一基类employee,其包含数据成员姓名和工资,并把其类体内的计算工 资和输出工资的函数设置为纯虚函数(2)从基类empl
42、oyee派生岀兼职技术员technician经理manager、销售员 salesman和销袒经理salesmanager四个类,都新加数据成员底薪和提成。结构 层次如下图:实验8运算符重载和文件操作一、实验目的1. 掌握c+中运算符重载的机制和运算符重载的方式;2. 掌握基木的输入输出操作及格式;3. 用c+预定义的文件i/o类进行文件输入输出。二、知识要点1. 运算符重载成员函数方式:单目(返冋类型类名:opennor单目运算符() 双口(返冋类型 类名:operator双口运算符(类名&引用) 下标运算符重载:类型 类名:operator(下标类型形参) 函数体提取符重载:预定义
43、插入符ostream & ostream: operator«(type &obj);预定义提取符istream & istream:: operator»(type &obj);运算符重载规则:(1) 不可以重载非c+的运算符;(2) 运算符重载可以采用成员函数方式或友元方式;(3) 被重载的运算符必须保持预定义的的优先级与结合性;(4) 应尽量使垂载的运算符语义自然、好理解;(5) 注意各运算符之间的联系。2. 文件操作:打开文件、读写文件、关闭文件。 低层次i/o机制:int creat()> int open()> int
44、 close()> int read()a int write() 高层次i/o机制:字符i/o函数getcharo >字符串i/o函数gets()>格式化i/o函数printf() 流类库:streambuf 类、ios 类、ostream 类、istream 类、iostream三、实验内容及步骤1 请降下列程序补充完整,并在主程序中完成其使用。 提示:补充下列程序friend franc operator -(franc fl,franc f2);friend franc operator * (franc fl,franc f2);friend franc operator /(franc fl,franc f2);void fransimpo;#include <iostream.h&g
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电器具包装与物流考核试卷
- 2024年项目管理专业人士资格认证考试专业知识试题及答案
- 2025年注会考试成功的秘诀试题及答案
- 2024年项目管理考试实操指导试题及答案
- 电气设备光纤传感技术考核试卷
- 环保志愿者培训考核试卷
- 掌握技巧2024年项目管理专业人士资格考试试题及答案
- 江苏河道杉木桩施工方案
- 中型海水淡化处理设备考核试卷
- 项目管理人员资格考试资格设置试题及答案
- 《内在强大:应变万难的力量》记录
- TSHJX 067-2024 基于TACS的全自动运行线路综合联调技术规范
- 2024至2030年中国擦窗机器人产业竞争现状及投资决策建议报告
- 益母草颗粒的保肝作用机制
- 中国经济史教学课件第八章近代农业经济的发展
- 2024年东南亚生化需氧量(BOD)分析仪市场深度研究及预测报告
- 《装饰构造与施工工艺实习》课程标准
- 高中数学教师资格证面试真题试
- 数学教育研究导论
- 医疗器械委托生产控制程序
- 【《大班幼儿合作行为的现状及培育策略探析》8900字(论文)】
评论
0/150
提交评论