第讲类和对象.ppt

上传人:本田雅阁 文档编号:2572783 上传时间:2019-04-10 格式:PPT 页数:74 大小:1.70MB
返回 下载 相关 举报
第讲类和对象.ppt_第1页
第1页 / 共74页
第讲类和对象.ppt_第2页
第2页 / 共74页
第讲类和对象.ppt_第3页
第3页 / 共74页
亲,该文档总共74页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《第讲类和对象.ppt》由会员分享,可在线阅读,更多相关《第讲类和对象.ppt(74页珍藏版)》请在三一文库上搜索。

1、作业参考程序,#include class Cheng int x,y; float a,b; public: void Input(int f) cinxy; void Input(float f) cinab; void Chengji(int f) coutx*yendl;,void Chengji(float f) couta*bendl; ; void main() Cheng ch; ch.Input(2); ch.Input(2.0f); ch.Chengji(1); ch.Chengji(1.0f); ,C+程序设计,第2讲 类和对象,第2讲 类和对象,1. 类的声明和对象的定

2、义 2. 类的成员函数 3. 对象成员的引用 4. 类的封装性和信息隐蔽 5. 类和对象的简单应用举例,1.类的声明和对象的定义,对象 指客观世界中任一实际存在的事物,它既可以是有形的(比如一辆汽车、一台电脑、一个班级等),也可以是无形的(比如一项计划、一个发明等)。 每个对象都具有属性和行为两个要素。 属性:描述了对象的静态特征 行为:描述了对象的动态特征(如功能、操作等),例如,对于班级对象, 属性:所属专业、人数、男女生比例等 行为:上课、下课、开会、选举班干部等活动,例如,对于摄像机对象, 属性:生产厂家、型号、重量、颜色等 行为:录像、放像、停止、快进、快退等功能,例如,对于一个数构

3、成的对象, 属性:值 行为:各种算术运算、输出操作等,下面介绍在C+中是如何利用面向对象方法编写软件的。我们结合例子来进行讲解。,例1、根据三角形的三条边长边长,计算并输出面积。 (用OOP法), 该系统包含一个三角形对象, 设计该三角形对象, 调用对象中的函数就是向该对象传送一个消息,要求该对象实施某一行为(功能)。,1.类的声明和对象的定义,流程: (1)定义一个三角形类,以描述各种三角形对象 (2)定义一个具体的三角形对象 (3)产生消息-输出边长 (4)产生消息-计算面积,1.类的声明和对象的定义,#include #include class Triangle /定义三角形类 pub

4、lic: Triangle(float x,float y,float z) a=x; b=y; c=z; float Area() /成员函数 float s=(a+b+c)/2; return sqrt(s*(s-a)*(s-b)*(s-c); void Printabc() /成员函数 couta“b“cendl; private: float a,b,c; /数据成员 ;,/接左边 int main() Triangle triobj(3,4,5); triobj.Printabc(); couttriobj.Area(); return 0; ;,定义一个三角形对象,其边长为3、4、

5、5,产生输出边长的消息,产生计算面积的消息,面向对象的程序设计方法,抽象性 封装性 继承性 多态性,面向对象方法的四个特征,特征之一抽象性,所谓抽象是将相关事物的共性进行归纳、集中的过程。利用抽象可把具有共同性质的事物划分为一类,并得出一个抽象的概念。,例如,把用汽油发动机驱动的车抽象为“汽车”,于是有了汽车的概念,它代表了车的一种类型;,把所有国籍为中国的人抽象为“中国人”,于是有了中国人的概念,它代表了人的一种类型;,把所有不带小数的数抽象为“整数”,于是有了整数的概念,它代表了数的一种类型即整数类型。实际上,C+中每种数据类型都是对一批具体的数的抽象。,由此不难想到,若把具有共同性质的对

6、象进行抽象,也会得到新的数据类型,在C+中这种类型统称为类(class)。因此类是对象的抽象,对象是类的实例。,例如,一个三角形可作为一个对象,10个不同尺寸的三角形是10个对象。如果这10个三角形对象有相同的属性和行为(只是边长不同),可以由它们抽象出三角形类。于是,这10个三角形就是属于同一类的对象。,特征之一抽象性,由于对象具有属性和行为两要素,因此,把对象进行抽象要做两方面的工作: 数据抽象:给出对象共有的属性或状态 代码抽象:给出对象共有的功能或行为特征 抽象的结果体现在相应的类定义中。,特征之二封装性,面向对象的封装有两层含义:, 将对象的数据及对数据的操作方法封装在一起,作为一个

7、相互依存、不可分离的整体。 这样一来,各个对象之间相对独立,互不干扰,便于实现模块化。, 尽可能隐蔽对象的内部细节,对外形成一个边界(或者说一道屏障),只保留有限的对外接口来接收外部消息。 这样一来,降低了操作对象的难度,增强信息的安全性。,特征之二封装性,如何实现封装呢?可借助C+中的类定义来实现。,class Clock private: int Hour,Minute,Second; public: void SetTime(); void ShowTime(); ;,特定的边界,特定的边界,外部接口,内部信息,2. 声明类类型,class 类名 public: 公有成员 private

8、: 私有成员 protected: 保护型成员 ;,下面来学习如何声明类。类也是用户自定义的数据类型,其声明格式如下:,class Clock public: void SetTime(int h,int m,int s) Hour=h; Min=m; Sec=s; void ShowTime() coutHour Min Sec; private: int Hour, Min, Sec; ;,class为声明类的关键字,类的声明 以分号结束,类体中包括类的全体成员。既有数据,也有对它们操作的函数,体现了封装性。,数据成员,2. 声明类类型,class 类名 public: 公有成员 priv

9、ate: 私有成员 protected: 保护型成员 ;,访问权限规定了成员的访问属性。具体地说就是, 私有成员:只能被本类中的成员函数引用,类外不能引用; 公有成员:不仅能被本类中的成员函数引用,也能被类外的其他函数引用。,class Clock public: void SetTime(int h,int m,int s) Hour=h; Min=m; Sec=s; void ShowTime() coutHour Min Sec; private: int Hour, Min, Sec; ;,数据成员,2. 声明类类型,class A int len; /私有成员 public: ;,关

10、于类的声明,再强调以下几点:,缺省访问权限为私有的,访问权限修饰符出现的次序任意,并且允许多次出现,class A private: int len; public: private: ;,公有成员通常是一些成员函数,它们向用户提供接口功能,私有成员通常是一些数据成员,它们用来描述对象的属性,class Clock public: void SetTime(int h,int m,int s) Hour=h; Min=m; Sec=s; void ShowTime() coutHour Min Sec; private: int Hour, Min, Sec; ;,在声明类时,不允许对数据成员

11、初始化,class Clock public: void SetTime(int h,int m,int s) Hour=h; Min=m; Sec=s; void ShowTime() coutHour Min Sec; private: int Hour=15, Min=30, Sec=0; ;,4. 定义对象的方法,1. 先声明类类型,然后再定义对象,class Student /声明类类型 public: void display( ) coutnum name sex; private: int num; char name20; char sex; ; Student s1, s2

12、; /定义了两个Student类的对象,对象s1包括student类中定义的数据和函数,编译器会为该对象分配存储空间,以存放对象中的成员。,4. 定义对象的方法,2. 在声明类类型的同时定义对象,class Student /声明类类型 public: void display( ) coutnum name sex; private: int num; char name20; char sex; s1, s2; /定义了两个Student类的对象,对象s1包括student类中定义的数据和函数,编译器会为该对象分配存储空间,以存放对象中的成员。,4. 定义对象的方法,3. 不出现类名,直接

13、定义对象,class /无类名 public: void display( ) coutnum name sex; private: int num; char name20; char sex; s1, s2; /定义了两个无类名的对象,在C+中很少用此方法,也不提倡使用。,5. 类的成员函数,类的成员函数是函数的一种,它的用法与前面学过的函数基本一致。 成员函数的特别之处在于,它属于一个类,且有访问权限。因此,在使用类函数时,要注意它的访问权限。 例如,私有成员函数只能被本类中的其它成员函数调用,而不能被类外调用。 但是,需要注意的是,成员函数可以访问本类中的任何成员。,通常将允许被外界调

14、用的成员函数指定为public,它们是类的对外接口。对于仅供本类中其它函数调用的函数,其访问权限应指定为private。,5.1 在类外定义成员函数,在前面的例子中,成员函数是在类体中定义的。也可以在类体中只写出成员函数的声明,而在类的外面定义函数。,class Student /声明类类型 public: void display( ) /定义成员函数 coutnum name sex; private: int num; char name20; char sex; ;,class Student /声明类类型 public: void display(); /声明成员函数 private

15、: int num; char name20; char sex; ; void Student : display() /类外定义成员函数 coutnum name sex; ,5.1 在类外定义成员函数,作用域运算符“:”功能是表明某成员属于一个类,其使用格式为: :(),注意事项: 在类体中直接定义函数时,不需要在函数名前面加上类名;但在类外定义成员函数时,必须在函数名前面加上类名,予以限定。 如果在作用域运算符的前面没有类名,或者函数名前面既无类名又无作用域运算符,如; display( ) 或 display( ) 则表示display函数不属于任何类,是一个普通函数。 类函数必须先

16、在类体中进行声明,然后在类外定义,即类体的位置应在函数定义之前。,5.2 inline(内联)成员函数,class Student public: void display( ) coutnum name sex; private: int num; string name; char sex; ;,注意:如果成员函数在类体外定义,系统并不把它默认为内置函数。,类的成员函数也可以指定为内置(内联)(inline)函数。 1.类体中定义的成员函数自动成为内置函数,相当于 inline void display( ),5.2 inline成员函数,2.把类体外定义的成员函数指定为内置函数,clas

17、s Student /声明类类型 public: inline void display(); /声明此成员函数为内置函数 private: int num; char name20; char sex; ; /在类外定义成员函数为内置函数 inline void Student : display() coutnum name sex; ,5.2 inline成员函数,例2、定义一个描述日期的类,class Date public: /公有成员 void SetDate(int y,int m,int d) /给对象设置日期值 year=y; month=m; day=d; int IsLe

18、apYear() /判断是否为闰年 return (year%4=0,5.2 inline成员函数,例3、定义一个描述二维平面上点坐标的类,class Point public: /公有成员 void SetPoint(int x,int y) /设置点的坐标 X=x; Y=y; int GetX() /返回点的X坐标 return X; int GetY() /返回点的X坐标 return Y; inline void Move(int xOffset, int yOffset);/改变点的坐标 private: /私有成员 int X, Y; ; inline void Move(int

19、xOffset, int yOffset)/改变点的坐标 X+=xOffset; Y+=yOffset; ,内联函数引入的目的,解决程序中一些函数体代码不是很大,但又频繁地被调用的函数的函数调用的效率问题。,5.2 inline成员函数,解决方法,以目标代码的增加为代价来换取时间上的节省;即在编译时将函数体中的代码替换到程序中,增加目标程序代码量,进而增加空间开销,从而在时间开销上不像函数调用时那么大。,内联函数的定义方法,在函数定义的前面加上关键字inline,inline int add(int x,int y,int z) return x+y+z; ,使用内联函数的优点是缩短程序运行时

20、间,提高程序执行效率。但是,它会增加程序可执行代码的长度。因此,内联函数适用于经常使用且规模很小的函数。,使用内联函数的注意事项,在内联函数内不允许用循环语句或条件语句、开关语句;因为它们有改变流程的语句,无法正确地替换。,内联函数的定义必须出现在该内联函数第一次被调用之前;内联函数定义在前,使用在后,以便编译器能够正确替换。,类结构中所有在类说明内部定义的函数都是内联函数;,内联函数无法递归调用;,内联函数具有与带参数的宏定义#define相同的作用和相似的机理,但内联函数具有宏定义的所有优点而没有其缺点,它消除了宏定义的不安全性。,内联函数和宏定义的区别,5.3 成员函数的存储方式,假设用

21、同一个类定义了8个对象,按理说,C+会为每个对象分配空间以存储对象的数据部分和函数代码。,由于这些函数代码完全相同,为节省空间起见,C+把函数代码只保存一份,供各个对象使用。,数据1,函数代码,对象1,数据2,函数代码,对象2,数据8,函数代码,对象8,因此,每个对象所占用的存储空间只是该对象的数据部分所占用空间,并不包括函数代码所占空间。,5.3 成员函数的存储方式,说明: 不论成员函数在类内定义还是在类外定义,成员函数的代码段都用同一种方式存储。,5.4 对象成员的引用,对象 类的对象是该类的某一特定实体,即类类型的变量。 常用的对象声明形式: ; 例如: Student s1, s2;

22、class Time public: int Hour,Min, Sec; ; Time t1, t2, *pt, t10, ,5.4 对象成员的引用,与访问结构体的成员类似,访问对象中的成员也有3种方法: 访问对象中成员的3种方法: 通过对象名和成员运算符访问对象中的成员; 通过指向对象的指针访问对象中的成员; 通过对象的引用变量访问对象中的成员。,引用,变量引用操作符 首先定义变量a,并初始化为1,然后定义引用b,并初始化为a,即b是a的别名,因此a和b是同一个单元。 注意:定义引用时一定要初始化,指明该引用变量是谁的别名。,例如: int sum,*p; int rsum是变量sum的引

23、用,rcount是一个内部临时变量的引用,该临时变量并不显式地表示出来。rp是*p的引用。,非法引用: int /数组不是单个对 象,不能定义数组引用,(2)特点:引用声明后,对引用的操作等同于对目标对象的操作。引用一旦初始化,它就维系在一个固定目标上,再也不分开。 (3)引用的作用:是用来作函数的参数或函数的返回值。 例如:int a=3; int ,输出结果:10,10,示例: int a=3; int ,8,m,定义引用并初始化,将引用赋值给变量,a=8,对引用的操作就是对被引用者的操作,5.4 对象成员的引用,对于一般对象 数据成员:对象名.成员名 成员函数:对象名.成员名(),例如:

24、 Student s1,s2; Time t1; t1.Hour=12; /访问对象t1的公用数据成员Hour s1.display( ); /调用对象s1的公用成员函数 display( ); /错误,未指明是哪一个对象的display函数 s1.num=99001; /错误,num是私有成员,不能被外界访问,成员运算符,8.4 对象成员的引用,对于引用对象 与一般对象相同; 数据成员:对象名.成员名 成员函数:对象名.成员名(),例如: Student s1, /调用引用对象s2的公用成员函数,成员运算符,8.4 对象成员的引用,对于指向对象的指针 数据成员:对象指针-成员名 成员函数:对

25、象指针-成员名(),例如: Student s1,*ps; Time t1, *pt= /调用ps指向的对象s1的公用成员函数,指向运算符,在pt指向t1的前提下, p-hour (*p).hour t1.hour 三者等价。,8.5 类和对象的简单应用举例,#include using namespace std; class Time public: int hour, minute, sec; ; int main( ) Time t1; cint1.hour; cint1.minute; cint1.sec; coutt1.hour“:“t1.minute“:“t1.secendl;

26、return 0; ,/定义Time类,/数据成员为公用的,/定义Time类的对象t1,/为t1的成员输入数据, /其中通过对象名引用其数据成员,例4、最简单的例子(引用一个对象)(P254例8.1),在引用成员时,不要忘记对象名,如果删去这3个输入语句,则输出结果是不可预知的,8.5 类和对象的简单应用举例,在本程序中,由于对每个对象都一一写出有关操作,因此当对象个数较多时,程序会冗长。 为了解决此问题,在程序b中用函数来进行输入输出。,#include using namespace std; class Time /定义类Time public: int hour; int minute

27、; int sec; ; int main() Time t1; /定义对象t1 cint1.hour; cint1.minute; cint1.sec; coutt1.hour“:“ t1.minute“:“ t1.secendl;,Time t2; /定义对象t2 cint2.hour; cint2.minute; cint2.sec; coutt2.hour“:“ t2.minute“:“ t2.secendl; return 0; ,例5a、引用多个对象的成员(P255例8.2程序a),8.5 类和对象的简单应用举例,例5b、引用多个对象的成员(P256例8.2程序b),class T

28、ime /定义类Time public: int hour,minute,sec; ; void set_time(Time ,由于形参为引用变量,在调用时,t成为了t1的别名,执行set_time函数相当于执行以下语句: cint1.hourt1.minutet1.sec;,/定义对象t1,/调用函数,为对象t1的成员输入数据,/调用函数,输出对象t1的数据,/定义对象t2,8.6 类和对象的简单应用举例,例5c、引用多个对象的成员(P257例8.2程序c),程序c对上面的程序进行修改,使得数据成员的值不再由键盘输入,而是在调用函数时由实参提供,并在函数中使用了默认参数。,例5d、用含有成员

29、函数的类来改写程序(P258例8.3),例5d、用含有成员函数的类改写程序(P258例8.3),#include using namespace std; class Time public: void set_time(); void show_time(); private: int hour, minute, sec; ; int main() Time t1; t1.set_time(); t1.show_time(); Time t2; t2.set_time(); t2.show_time(); return 0; ,void Time:set_time() cinhourminu

30、tesec; void Time:show_time() couthour“:“minute“:“sec; ,有2个公有成员函数,声明成员函数,有3个私有的数据成员,在类外定义成员函数 注意:成员函数可直接引用数据成员,定义Time类对象t1,调用对象t1的成员函数set_time, 为t1的数据成员输入数据,调用对象t1的成员函数show_time, 输出t1的数据成员值,调用对象t2的成员函数set_time, 为t2的数据成员输入数据,调用对象t2的成员函数show_time, 输出t2的数据成员值,定义Time类对象t2,几点注意:,1.在main中调用成员函数时,应指定 对象名,2.

31、当调用t1.set_time()时,引用的是t1的数据成员,3.在类外定义成员函数时,应指定作用域(类名),8.6 类和对象的简单应用举例,例6、找出一个整型数组中的最大元素(P259例8.4),这里使用类来处理。,#include using namespace std; class Array_max public: void set_value( ); void max_value( ); void show_value( ); private: int array10; int max; ; void Array_max:set_value( ) for (int i=0;iarray

32、i; ,void Array_max:max_value( ) max=array0; for(int i=1;imax) max=arrayi; void Array_max:show_value( ) cout“max=“max; int main( ) Array_max arrmax; arrmax.set_value( ); arrmax.max_value( ); arrmax.show_value( ); return 0; ,可以看出,主函数十分简单,只需调用有关对象的成员函数,以完成相应的操作。 在面向对象的程序设计中,最关键的工作是类的设计,所有的数据和对数据的操作都体现在

33、类中。,例6、找出一个整型数组中的元素的最大值,#include using namespace std; class Array_max public: void set_value( ); void max_value( ); void show_value( ); private: int array10; int max; ; void Array_maxset_value( ) int i; for (i=0;iarrayi; void Array_maxmax_value( ) int i; max=array0; for (i=1;imax) max=arrayi; ,void

34、Array_maxshow_value( ) coutmax=max; int main( ) Array_max arrmax; arrmax.set_value( ); arrmax.max_value( ); arrmax.show_value( ); return 0; ,/声明类,/以下3行为成员函数原型声明,/对数组元素设置值,/找出数组中的最大元素,/输出最大值,/整型数组,/成员函数定义,向数组元素输入数值,/成员函数定义,找数组元素中的最大值,/定义对象arrmax,/调用arrmax的set_value函数,向数组元素输入数值,/调用arrmax的max_value函数,找

35、出数组元素中的最大值,/调用arrmax的show_value函数,输出数组元素中的最大值,/成员函数定义,输出最大值,8.6 类和对象的简单应用举例,例7、使用类设计模仿数字式时钟的程序,(1)函数main()能使用对象clockA和clockB,但是不能访问对象内部私有的数据成员和成员函数。 (2)只要定义了类,就可以建立多个对象,并且这些对象之间不会相互干扰。,8.6 类的封装性和信息隐蔽,公用接口与私有实现的分离 class Student private: int num; string name; char sex; public: void display( ) coutnum:

36、numendl; coutname:nameendl; coutsex:sexendl ; Student stud;,被操作的数据是私有的,公用接口,int age;,(1)如果想修改或扩充类的功能,只需修改本类中有关的数据成员和与它有关的成员函数,程序中类外的部分可以不必修改。,coutage:ageendl;,注意:虽然类中的数据成员改变了,成员函数display的定义改变了,但是类的对外接口没有改变,外界仍然通过公用的display函数访问类中的数据。程序中的其他任何部分均无需修改。,当接口与实现(对数据的操作)分离时,只要类的接口没有改变,对私有实现的修改不会影响程序的其他部分。,(

37、2) 如果在编译时发现类中的数据读写有错,不必检查整个程序,只需检查本类中访问这些数据的少数成员函数。,8.6 类的封装性和信息隐蔽,类声明和成员函数定义的分离 如果一个类被多个程序使用,一般做法是将类的声明(其中包含成员函数的声明)放在指定的头文件中,用户如果想用该类,只要把有关的头文件包含进来即可,不必在程序中重复书写类的声明,减少工作量,提高编程的效率。 /student.h (这是头文件,在此文件中进行类的声明) class Student public: void display( ); private: int num; char name20; char sex; ;,/类声明,

38、/公用成员函数原型声明,/student.cpp (在此文件中进行函数的定义) #include #include “student.h “ void Studentdisplay( ) coutnum:numendl; coutname:nameendl; coutsex:sexendl; ,/不要漏写此行,否则编译通不过,/在类外定义display类函数,8.6 类的封装性和信息隐蔽,为了组成一个完整的源程序,还应当有包括主函数的源文件: /main.cpp 主函数模块 #include #include student.h /将类声明头文件包含进来 int main( ) Student

39、 stud; /定义对象 stud.display( ); /执行stud对象的display函数 return 0; ,这是一个包括3个文件的程序,组成两个文件模块: 一个是主模块main.cpp,一个是student.cpp。在主模块中又包含头文件student.h。在预编译时会将头文件student.h中的内容取代#include student.h行。,8.6 类的封装性和信息隐蔽,注意:由于将头文件student.h放在用户当前目录中,因此在文件名两侧用双撇号包起来“student.h ”)而不用尖括号(),C+编译系统对两个文件main.cpp和student.cpp分别进行编译,

40、得到两个目标文件main.obj和tudent.obj,得到两个目标文件main.obj和tudent.obj,C+编译系统对两个文件main.cpp和student.cpp分别进行编译,8.6 类的封装性和信息隐蔽,在实际工作中,并不是将一个类声明做成一个头文件,而是将若干个常用的功能相近的类声明集中在一起,形成类库。 类库有两种: 一种是C+编译系统提供的标准类库;一种是用户根据自己的需要做成的用户类库,提供给自己和自己授权的人使用,这称为自定义类库。 类库包括两个组成部分: (1)类声明头文件; (2)已经过编译的成员函数的定义,它是目标文件。 用户只需把类库装入到自己的计算机系统中(一

41、般装到C+编译系统所在的子目录下),并在程序中用#include命令行将有关的类声明的头文件包含到程序中,就可以使用这些类和其中的成员函数,顺利地运行程序。,补充内容(自学)?:全局作用域限定符“:”,#include using namespace std; int X=1; void main() int X=2; cout X; ,此时输出的X值是为“1”还是“2”? 输出:2 因为系统采用同名覆盖原则。 如何输出全局变量X的值?,相同吗?,C+中的全局作用域限定符,例题:全局作用域 #include using namespace std; int X=1; void main() i

42、nt X=2; cout “local X=“ Xendl; /未限定时的符号名为局部符号名 cout “global X=” :Xendl; /采用“:”限定时的符号名为全局符号名 ,全局作用域限定符“:”的作用: 能使程序员访问到在某外部块中所定义的全局变量,以免被同名的局部变量所覆盖。 访问规则: (1)有“:”限定的同名符号是全局变量。 (2)无“:”限定的同名符号是局部变量。,全局作用域限定符的编程规则,:CreateWindow(参数); CreateWindow(参数);,全局作用域限定符“:”不仅可以限定变量,也可以用来限定函数。 以Microsoft 公司的SDK API函数

43、与VC+中的MFC类库中的成员函数同名为例说明,它为MFC CWnd类中的成员函数!,它为Windows API 全局函数,面向对象的程序设计方法,在C+中,每个对象都是由数据和函数(即操作代码)这两部分组成。,数据用来描述对象的“属性”,函数用来对数据进行操作,实现对象的“行为”,对于三角形对象, 它的3个边长就是它的属性 计算三角形面积和输出有关数据就是它的行为(方法),C+程序设计,第8章 类和对象 课后作业与上机练习题目,本章作业,1.分析下列程序的输出结果 (1) #include using namespace std; class Location public: void in

44、it(int i=0,int j=0); void setA(int n1) A=n1; void setB(int n2) B=n2; int getA() return A; int getB() return B; private: int A,B; ;,void Location:init(int i,int j) A=i; B=j; int main() Location X,Y; X.init(4); X.setA(10); coutX.getA()“,“X.getB()endl; Y.init(7,9); Y.setB(8); coutY.getA()“,“Y.getB()end

45、l; return 0; ,本章作业,(2)下面的程序定义了一个Clock类,记录当前时间(小时和分钟),并可以通过两个函数取到这两个私有成员。主函数定义一个Clock对象,输出他的当前时间,然后将时间增加一分钟,再输出增加后的时间。写出程序运行结果。 #include using namespace std; class clock int hour; int minute; public: clock(void); void inc_time(void); int present_hour(void) return hour; int present_minute(void) return

46、 minute; void print_time(); ; clock:clock(void) hour = 6; minute = 59;,本章作业,void clock:print_time(void) cout59) minute-=60; hour+; ,int main() clock myclock; myclock.print_time(); myclock.inc_time(); myclock.print_time(); myclock.inc_time(); myclock.print_time(); return 0; ,本章作业,2. 设计Test类,使如下程序的输出结果为: 测试结果:68-55=13 int main() Test a; a.init(68,55); a.print(); return 0; ,本章作业,3. 改错题 (1)请用横线标出下面的程序错误语句所在行并说明出错原因。 #inclu

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

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1