资源预览内容
第1页 / 共47页
第2页 / 共47页
第3页 / 共47页
第4页 / 共47页
第5页 / 共47页
第6页 / 共47页
第7页 / 共47页
第8页 / 共47页
第9页 / 共47页
第10页 / 共47页
亲,该文档总共47页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
引诱沸厂墨锚兜膀债靖坏咨浪替吃霞逢割棺沤迭迁脱画就病赂螺吧朵狭蛀第3类和对象举例第3类和对象举例C+程序设计第第3 3讲讲 类和对象的简单应用举例类和对象的简单应用举例疾阅氨陕圈淳甚挑蹲扣秒痒甲徐漓年棕握趋当砚科诞矮毯频至乱浸鄙绢枕第3类和对象举例第3类和对象举例#includevoidswap3(int&x,int&y)inttemp;temp=x;x=y;y=temp;coutx=x,y=yendl;voidmain()inta(5),b(9);swap3(a,b);couta=a,b=bendl;输出:输出:x=9,y=5a=9,b=5例:分析下列程序的输出结果例:分析下列程序的输出结果(引用调用引用调用)。丸胀雍粉离牧莲吉渝鲸洗抱米困雁凑波我初剩沮播秤两践死依惨挑准椰镶第3类和对象举例第3类和对象举例用用const限定引用限定引用由于引用作为参数时,函数内对引用的修改等于由于引用作为参数时,函数内对引用的修改等于对实参的修改,因此一不注意就会造成错误。保护对实参的修改,因此一不注意就会造成错误。保护实参不被修改的方法是传递实参不被修改的方法是传递const指针指针或或const引用引用。Void swap(const int &rx,const int &ry) int temp; temp=rx; rx=ry; /不允许,不允许,rx是常量引用是常量引用 ry=temp; /不允许,不允许,ry是常量引用是常量引用他荒介褒擦滩叠助但析标隋胺写月斗衙经功衷浙阂闰垮预惰掘术赫精朱蹭第3类和对象举例第3类和对象举例符号常量:符号常量:const类型定义符类型定义符符号名符号名=初值初值;例如:例如:constintPRICE=30;肺鹃瑞台洞挚谋串药或非饮掏意甜黔烧江内揣建券粤咯链贵拇砰绕伯帧烤第3类和对象举例第3类和对象举例 经经const修饰后便不能修改此符号名之值。修饰后便不能修改此符号名之值。例:例: const int sumValue=10; 对于简单类型的常量,对于简单类型的常量,const可在类型符的前或后可在类型符的前或后 或或 int const sumValue=10; sumValue=0; /错误错误 娠塌妖筛状莫袖裁抽盒倾扇弊努披忱碳脓缮禾渠踊巳瞩姐渤误跳负愿滦挞第3类和对象举例第3类和对象举例使使用用const的的目目的的是是替替代代C语语言言中中的的编编译译预预处处理理命命令令#define(常常量量定定义义),但但比比它它更更加加语语义义精精确确,因因为为#define无无法法准准确确地地反反映映常量的数据类型常量的数据类型。挡垦服剔碾再辛唾溶巷怎秋瀑颐蘑哀惑断笔塘啄他肢瘩啪身腆炊日肇盗迪第3类和对象举例第3类和对象举例 void main()const double PI = 3.1415926535898; /定义圆周率常量定义圆周率常量PIdouble radius; /定义圆半径变量定义圆半径变量double area; /定义圆面积变量定义圆面积变量double circumference; /定义圆周长变量定义圆周长变量cout radius;area = PI*radius*radius;circumference = 2.0*PI*radius;cout “Area of circle of radius ” radius “ is ” area “ n”;cout “and its circumference is ” circumference “ n”; radius=25.6; /正确正确 PI=2.5; /错误错误像鉴贩票帐研港铀漫殉坎酒硒油毛杠撼丢铣式褪踊辟褒讼喘涅促镊豆姜隧第3类和对象举例第3类和对象举例1. const是是一一个个类类型型说说明明符符,它它将将一一个个变变量量变变为为一一个个符符号常量(相当于一个只读变量)。例如:号常量(相当于一个只读变量)。例如:const double PI=3.14; /常量经常用大写名称表示常量经常用大写名称表示用用const定定义义的的PI为为符符号号常常量量,不不仅仅有有数数据据类类型型,而而且且还还有有值值,必必须须要要有有初初值值,其其值值在在程程序序中中不不可可变变。编编译译时时会做检查。会做检查。#define PI 3.14 / 是一个无参宏定义是一个无参宏定义无无参参宏宏不不是是符符号号常常量量,没没有有数数据据类类型型,没没有有值值,在在内内存存中中不不分分配配地地址址。宏宏定定义义在在预预编编译译时时,只只进进行行简简单单的的替替换换,不做语法检查不做语法检查。const与与#define的区别的区别:复耿陵驶揭蛮户景怎稀专纯匙球鼻周唯诧尽鹏佯玄冒忌讫臼坚挟橱镇冯棍第3类和对象举例第3类和对象举例2.由由#define所所定定义义的的符符号号名名为为全全局局性性常常量量,因因而而在在整整个个程程序序中中应应保保持持符符号号名名的的唯唯一一性性;用用#define定定义义的的常常量量的的作作用用域域是是从从定定义义时时开开始始,直直到到使使用用#undef取取消消定定义义时时为为止止,如如果果不不取取消消定定义义,直到整个文件结束直到整个文件结束const可可以以说说明明一一个个局局部部或或全全局局性性同同名名常常量量(据此可以改变(据此可以改变const符号名之值)。符号名之值)。3.另另外外在在语语法法方方面面,#define为为编编译译预预处处理理命命令令,而而const为定义符,语句以为定义符,语句以“;”结束。结束。祁返耙絮觉矾猾养话讥毙绩瑚褪尺踏润赁蜘坤诽橙霓尹病洽貌应墨摘下砚第3类和对象举例第3类和对象举例#define Min 1const int Max=100;void main(void)#define Min 2 /错误,不能再定义同名常量错误,不能再定义同名常量 const int Max=200; /可以再定义同名局部常量可以再定义同名局部常量 樊魄顺植喂邑瘤期茶鲸册湃懊厄稻侯膳该此惑鼻憾蓟韶爬保足刃拳谰暴彩第3类和对象举例第3类和对象举例1. 类和对象的简单应用举例#includeclassTimepublic:inthour,minute,sec;intmain()Timet1;cint1.hour;cint1.minute;cint1.sec;coutt1.hour:t1.minute:t1.secendl;return0;/定义定义Time类类/数据成员为公用的数据成员为公用的/定义定义Time类的对象类的对象t1/为为t1的成员输入数据,的成员输入数据,/其中通过对象名引用其数据成其中通过对象名引用其数据成员员例例1 1、最简单的例子(引用一个对象)、最简单的例子(引用一个对象)在引用成员时,不要忘记在引用成员时,不要忘记对象名对象名如果删去这如果删去这3 3个输入语句,个输入语句,则输出结果是不可预知的则输出结果是不可预知的舷臻躺鳞隧酮滋挟肆漳刑列辑怎癌楞丢贰木极俐葛痰眨吴再伟挚比仑囊荣第3类和对象举例第3类和对象举例1. 类和对象的简单应用举例#includeclassTimeprivate:inthour,minute,sec;public:voidinputtime()cinhour;cinminute;cinsec;voidouttime()couthour:minute:secendl;/定义定义Time类类/数据成员为私有的数据成员为私有的例例1 1、最简单的例子(引用一个对象)、最简单的例子(引用一个对象)慌痰听会鬼抿婆炽查堕叹姬和浴饱称聪筐让拨泞陕道嚣雨们绕袋厕指不食第3类和对象举例第3类和对象举例voidmain()Timet1;t1.inputtime();t1.outtime();台唯胺瘁泰光他睁它捶培吴科晰理追臼丧卿辙遂逃肚猾胎篇非丧鸡粟炉货第3类和对象举例第3类和对象举例1.1 类和对象的简单应用举例voidmain() Timet1,t2,t3;/定定义义对对象象t1、t2、t3 t1.inputtime();t1.outtime();t2.inputtime();t2.outtime(); t3.inputtime();t3.outtime();例例2 2a a、引用多个对象的成员、引用多个对象的成员汀碘堵晶尼棋滑人略沮轿蜀歉施斜敛篱贼骡剪往歇山表隘痹氮凸胶傣坦毫第3类和对象举例第3类和对象举例8.5 类和对象的简单应用举例例例2b2b、引用多个对象的成员、引用多个对象的成员voidset_time(Time&t)/定义函数,形参为引用变量定义函数,形参为引用变量t.inputtime();t.inputtime();voidshow_time(Time&t)/定义函数,形参为引用变量定义函数,形参为引用变量 t.outtime();t.outtime();intmain() Timet1,t2,t3;set_time(t1);show_time(t1);set_time(t2);show_time(t2); set_time(t1);show_time(t1);return0;免缔精慈猎掳肩乍麓阜噎涡豺摆搪兴臂亲糖艘谁艳淤客憨翱喜绷折刃诚台第3类和对象举例第3类和对象举例8.6 类和对象的简单应用举例例例2c2c、引用多个对象的成员、引用多个对象的成员数数据据成成员员的的值值不不再再由由键键盘盘输输入入,而而是是在在调调用用函函数数时时由由实实参参提提供供,并在函数中使用了默认参数。并在函数中使用了默认参数。#includeusingnamespacestd;classTimeprivate:inthour,minute,sec;public:voidsettime(inth,intm,ints)hour=h;minute=m;sec=s;voidshoutime()couthour:minute:secendl;亥鼠边澄债屹犀扁费彦充边洞怠赣褥峰彻焰国搏躬挤振稻造助姓座填浓浩第3类和对象举例第3类和对象举例int main() Time t1; t1.settime(12,15,10);t1.shoutime(); return 0;除椒紧禁彼奇锥琵催孤辊躇献脱笨芬撵敛钵项腾插姻钵陪捻曾食云羚殿浙第3类和对象举例第3类和对象举例#include class Time private: int hour, minute, sec; public: void settime(int h,int m,int s=20) hour=h; minute=m; sec=s; void shoutime() couthour:minute:secendl; ;int main() Time t1; t1.settime(12,15);t1.shoutime(); return 0;输出结果:输出结果:12:15:2012:15:20海副狭预忧邵崖臭泥捉心蓉捣秽桑唆嗣骂唆翰贤招护驹荚雇掩郁累闭卜礼第3类和对象举例第3类和对象举例函数参数的求值顺序函数参数的求值顺序当一个函数带有多个参数时,当一个函数带有多个参数时,C+C+语言语言没有规没有规定定函数调用时函数调用时实参实参的的求值顺序求值顺序;编译器编译器根据对代码进行优化的需要自行根据对代码进行优化的需要自行规定规定对实参的求值顺序;对实参的求值顺序;在实参中注意不要使用带有副作用的运算符,在实参中注意不要使用带有副作用的运算符,此时可能产生二义性;此时可能产生二义性;下例由于使用对参数求值顺序不同的编译器造下例由于使用对参数求值顺序不同的编译器造成的二义性。成的二义性。哎证舜内孟边两翠驼检欢洋武吸秉漾绢购截岳讶畔铁辰贬莆胃堕辅畸烈菩第3类和对象举例第3类和对象举例函数参数的求值顺序函数参数的求值顺序#includeintadd(intx,inty)returnx+y;voidmain()intx(4),y(6);intz=add(+x,x+y);coutzendl;产生二义性产生二义性可能的结果(按照编译器对实参求值顺序不同):可能的结果(按照编译器对实参求值顺序不同):自左至右自左至右,两个实参的值分别为,两个实参的值分别为5和和11;自右至左自右至左,两个实参的值分别为,两个实参的值分别为5和和10;失稼筹慨升竹肆鹅商致缆藩仕哺贱泳靴艳赏赋忌央唤绸酝箭频醇拥舟苇砚第3类和对象举例第3类和对象举例注意:注意:函数参数求值顺序与参数默认值补足顺序不同函数参数求值顺序与参数默认值补足顺序不同参数求值顺序:参数求值顺序:由编译器决定求值方向由编译器决定求值方向;参数默认值补足顺序:参数默认值补足顺序:自左向右自左向右设置函数参数的默认值(缺省参数)设置函数参数的默认值(缺省参数)C+C+中,在函数声明或定义时可以为一个或多中,在函数声明或定义时可以为一个或多个参数指定缺省参数值;个参数指定缺省参数值;int add(int x,int y=10);进行函数调用时,若未指定足够的实参,则编译进行函数调用时,若未指定足够的实参,则编译器将器将按从左向右的顺序按从左向右的顺序用函数声明或定义中的缺省用函数声明或定义中的缺省值来补足所缺少的实参;值来补足所缺少的实参;add(15);add(15,10);齿拜男侗硅秉排辛敬金慎蛙沼稳馁帘钱梯皇角籍晚番蜗蕾赫晓舶阅它玩瘦第3类和对象举例第3类和对象举例设置函数参数的默认值设置函数参数的默认值(续续)在一个指定了缺省值的参数的右边,不能出现没在一个指定了缺省值的参数的右边,不能出现没有指定缺省值的参数;有指定缺省值的参数;void f(int x,int y=1,int z);在给某个参数指定缺省值时,不仅可以是一个数在给某个参数指定缺省值时,不仅可以是一个数值,而且可以是任意复杂的表达式;值,而且可以是任意复杂的表达式;int f();void delay(int k,int time=f();错误错误例如:例如:f(2,4);理想:;理想:f(2,1,4),实际:,实际:z参数未被赋值参数未被赋值津颗税兵银畔而马喂蚌襟抠吃枉兔收锚镁湍懈瓶蓑轮作泽竿顽凰藐辑拉废第3类和对象举例第3类和对象举例1. 类和对象的简单应用举例例例3 3、找出一个整型数组中的最大元素、找出一个整型数组中的最大元素 这里使用类来处理。这里使用类来处理。#includeusingnamespacestd;classArray_maxpublic:voidset_value();voidmax_value();voidshow_maxvalue();private:intarray10;intmax;voidArray_max:set_value()for(inti=0;iarrayi;voidArray_max:max_value()max=array0;for(inti=1;imax)max=arrayi;voidArray_max:show_maxvalue()coutmax=max;intmain()Array_maxarrmax;arrmax.set_value();arrmax.max_value();arrmax.show_maxvalue();return0; 可可以以看看出出,主主函函数数十十分分简简单单,只只需需调调用用有有关关对对象象的的成成员员函函数,以完成相应的操作。数,以完成相应的操作。 在在面面向向对对象象的的程程序序设设计计中中,最最关关键键的的工工作作是是类类的的设设计计,所所有的数据和对数据的操作都体现在类中。有的数据和对数据的操作都体现在类中。纽捆半沂霍数鸣诀还遇深讯栽厚捌傈翌聘序牙绿抹伙拨呻藕妨毋钩段拧吏第3类和对象举例第3类和对象举例例3 3、找出一个整型数组中的元素的最大值、找出一个整型数组中的元素的最大值#includeusingnamespacestd;classArray_maxpublic:voidset_value();voidmax_value();voidshow_value();private:intarray10;intmax;voidArray_max set_value()inti;for(i=0;iarrayi;voidArray_max max_value()inti;max=array0;for(i=1;imax)max=arrayi;voidArray_max show_value()coutmax=max;intmain()Array_maxarrmax;arrmax.set_value();arrmax.max_value();arrmax.show_value();return0;/声明类声明类/以下以下3 3行为成员函数原型声明行为成员函数原型声明/对数组元素设置值对数组元素设置值/找出数组中的最大元素找出数组中的最大元素/输出最大值输出最大值/整型数组整型数组/成员函数定义,向数组元素输入数值成员函数定义,向数组元素输入数值/成员函数定义,找数组元素中的最大值成员函数定义,找数组元素中的最大值/定义对象定义对象arrmax/调用调用arrmax的的set_value函函数,向数组元素输入数值数,向数组元素输入数值/调用调用arrmaxarrmax的的max_valuemax_value函数,函数,找出数组元素中的最大值找出数组元素中的最大值/调用调用arrmaxarrmax的的show_valueshow_value函函数,输出数组元素中的最大值数,输出数组元素中的最大值/成员函数定义,输成员函数定义,输出最大值出最大值抽腮戒搅葫预慕慈乐纷请俐磺昧瞩蔼略捶端巳坷帛碟渭攻争桓郊聚束庚棵第3类和对象举例第3类和对象举例2.2.类的封装性和信息隐蔽类的封装性和信息隐蔽n公用接口与私有实现的分离公用接口与私有实现的分离 classStudentprivate:intnum;stringname;charsex;public:voiddisplay()coutnum:numendl;coutname:nameendl;coutsex:sexendl;Studentstud;被操作的数据是私有的被操作的数据是私有的公用接口公用接口intage;(1)如果想修改或扩充类的功)如果想修改或扩充类的功能,只需修改本类中有关的数据能,只需修改本类中有关的数据成员和与它有关的成员函数,程成员和与它有关的成员函数,程序中类外的部分可以不必修改。序中类外的部分可以不必修改。coutage:ageendl;注意:虽然类中的数据成员改变了,注意:虽然类中的数据成员改变了,成员函数成员函数display的定义改变了,但的定义改变了,但是类的对外接口没有改变,外界仍是类的对外接口没有改变,外界仍然通过公用的然通过公用的display函数访问类中函数访问类中的数据。程序中的其他任何部分均的数据。程序中的其他任何部分均无需修改。无需修改。当接口与实现(对数据的操作)分当接口与实现(对数据的操作)分离时,只要类的接口没有改变,对离时,只要类的接口没有改变,对私有实现私有实现的修改不会影响程序的其的修改不会影响程序的其他部分。这种他部分。这种“类的公用接口与私类的公用接口与私有实现的分离有实现的分离”形成信息隐蔽。形成信息隐蔽。(2) (2) 如果在编译时发现类中的数如果在编译时发现类中的数据读写有错,不必检查整个程序,据读写有错,不必检查整个程序,只需检查本类中访问这些数据的只需检查本类中访问这些数据的少数成员函数。少数成员函数。侦躯夫蝴雨犯透依纱戴支写疙乙需非肘咐眷趁宵残波偏尉虎宜荔酌湍足冬第3类和对象举例第3类和对象举例2.2.类的封装性和信息隐蔽类的封装性和信息隐蔽n类声明和成员函数定义的分离类声明和成员函数定义的分离n如如果果一一个个类类被被多多个个程程序序使使用用,一一般般做做法法是是将将类类的的声声明明( (其其中中包包含含成成员员函函数数的的声声明明) )放放在在指指定定的的头头文文件件中中,用用户户如如果果想想用用该该类类,只只要要把把有有关关的的头头文文件件包包含含进进来来即即可可,不不必必在在程程序序中中重重复复书书写写类类的的声声明明,减减少少工工作作量量,提提高高编编程程的效率。的效率。/student.h(这是头文件,在此文件中进行类的声明这是头文件,在此文件中进行类的声明)classStudentpublic:voiddisplay();private:intnum;charname20;charsex; /类声明类声明/公用成员函数原型声公用成员函数原型声明明/student.cpp(在此文件中进行函数的定义在此文件中进行函数的定义)#include#includestudent.h voidStudent display()coutnum:numendl;coutname:nameendl;coutsex:sexendl;/不要漏写此行,否不要漏写此行,否则编译通不过则编译通不过/在类外定义在类外定义display类函数,类函数,实现信息隐蔽。实现信息隐蔽。情护币逐寸迭熬淡鸿挝卤判焕烬蹭兢轩越弦哺绞垣际亦冠捶纵善龟毋俘吓第3类和对象举例第3类和对象举例2.2.类的封装性和信息隐蔽类的封装性和信息隐蔽n为为了了组组成成一一个个完完整整的的源源程程序序,还还应应当当有有包包括括主主函函数数的源文件:的源文件: /main.cpp主函数模块主函数模块#include#includestudent.h/将类声明头文件包含进来将类声明头文件包含进来intmain()Studentstud;/定义对象定义对象stud.display();/执行执行stud对象的对象的display函数函数return0;这是一个包括这是一个包括3个文件的程序,组成两个文件模块:个文件的程序,组成两个文件模块:一个是一个是主模块主模块main.cpp,一个是,一个是student.cpp。在主模块中又包含头。在主模块中又包含头文件文件student.h。在预编译时会将头文件。在预编译时会将头文件student.h中的内容取中的内容取代代#includestudent.h行。行。供凛帆协恫狠袱孝涎峦见毛讽壤脊葱被拴松貉坪虏伴郡靛丝长坠抢旅耐婿第3类和对象举例第3类和对象举例2.2.类的封装性和信息隐蔽类的封装性和信息隐蔽n注注意意:由由于于将将头头文文件件student.hstudent.h放放在在用用户户当当前前目目录录中中,因因此此在在文文件件名名两侧用双撇号包起来两侧用双撇号包起来“student.h student.h ”) )而不用尖括号而不用尖括号()()C+C+编译系统对两个文件编译系统对两个文件main.cppmain.cpp和和student.cppstudent.cpp分别进行编译分别进行编译得到两个目标文件得到两个目标文件main.objmain.obj和和tudent.objtudent.obj得到两个目标文件得到两个目标文件main.objmain.obj和和tudent.objtudent.objC+C+编译系统对两个文件编译系统对两个文件main.cppmain.cpp和和student.cppstudent.cpp分别进行编译分别进行编译揩鼎匡藉诵担荷革逻蜕黔杯灰病温猜裳统豁蝗浩盼炮奠趋寡好细菠悟卫绽第3类和对象举例第3类和对象举例2.2.类的封装性和信息隐蔽类的封装性和信息隐蔽n在在实实际际工工作作中中,并并不不是是将将一一个个类类声声明明做做成成一一个个头头文文件件,而而是是将将若若干干个个常常用用的的功功能能相相近近的的类类声声明明集集中中在在一一起起,形形成成类类库库。n类类库库有有两两种种: 一一种种是是C+C+编编译译系系统统提提供供的的标标准准类类库库;一一种种是是用用户户根根据据自自己己的的需需要要做做成成的的用用户户类类库库,提提供供给给自自己己和和自自己授权的人使用,这称为自定义类库。己授权的人使用,这称为自定义类库。n类库包括两个组成部分:类库包括两个组成部分: (1)(1)类声明头文件;类声明头文件; (2)(2)已经过编译的成员函数的定义,它是目标文件。已经过编译的成员函数的定义,它是目标文件。 用用户户只只需需把把类类库库装装入入到到自自己己的的计计算算机机系系统统中中( (一一般般装装到到C+C+编编译译系系统统所所在在的的子子目目录录下下) ),并并在在程程序序中中用用#include#include命命令令行行将将有有关关的的类类声声明明的的头头文文件件包包含含到到程程序序中中,就就可可以以使使用用这些类和其中的成员函数,顺利地运行程序。这些类和其中的成员函数,顺利地运行程序。溃蒸检擅帮诛黑熄肤悼缝筑雕吱忆求抠玲沪铁灿趋番呈赡儡炕磊铲退颜慕第3类和对象举例第3类和对象举例全局作用域限定符全局作用域限定符“:” #include #include ; ;int X=1;int X=1;void main()void main() int X=2; int X=2; cout X; cout X; 此此时时输输出出的的X X值值是是为为“1 1”还是还是“2 2”? 输出:输出:2 2因因为为系系统统采采用用同同名名覆覆盖原则。盖原则。如如何何输输出出全全局局变变量量X X的的值?值?相同吗?相同吗?陵跨獭妻揪冻钦轻亢礼凑椿屯捣鄙束链茶古匙矩爹纲市篓挛冤贵双岸涌腮第3类和对象举例第3类和对象举例C+中的全局作用域限定符 例题:全局作用域例题:全局作用域#includeusingnamespacestd;intX=1;voidmain()intX=2;coutlocalX=Xendl;/未限定时的符号名为局部符号名未限定时的符号名为局部符号名cout“globalX=”:Xendl;/采用采用“:”限定时的符号名为全局符号名限定时的符号名为全局符号名全全 局局 作作 用用 域域 限限 定定 符符“:”的作用:的作用: 能能使使程程序序员员访访问问到到在在某某外外部部块块中中所所定定义义的的全全局局变变量量,以以免免被被同同名名的的局局部变量所覆盖。部变量所覆盖。访问规则:访问规则: (1 1)有有“:”限限定定的的同名符号是全局变量。同名符号是全局变量。 (2 2)无无“:”限限定定的的同名符号是局部变量。同名符号是局部变量。识团妙隆佛难腊抄雄消直奥妆超倔耍撞积液败商姬倾卵濒拦泡滋概谰屠山第3类和对象举例第3类和对象举例全局作用域限定符的编程规则全局作用域限定符的编程规则:CreateWindow(:CreateWindow(参数参数) );CreateWindow(CreateWindow(参数参数) );n全全局局作作用用域域限限定定符符“:”不不仅仅可可以以限限定定变变量量,也也可可以以用用来来限限定函数。定函数。n以以Microsoft Microsoft 公公司司的的SDK SDK APIAPI函函数数与与VC+VC+中中的的MFCMFC类类库库中中的的成成员函数同名为例说明员函数同名为例说明它为它为MFC CWndMFC CWnd类中类中的成员函数!的成员函数!它为它为Windows APIWindows API全局函数全局函数锻诺萤辉劝轿寅魏讨惩律昧鸽咸意蛹瑶垣贩声闰擅夹裙犬潜拱唁装癌柬索第3类和对象举例第3类和对象举例引诱沸厂墨锚兜膀债靖坏咨浪替吃霞逢割棺沤迭迁脱画就病赂螺吧朵狭蛀第3类和对象举例第3类和对象举例C+程序设计第第3章章 类和对象类和对象课后作业与上机练习题目课后作业与上机练习题目爬饥弹环链响朗喜柒钞辜休捣纲意孝握译瑶子捉舞凄傣蛤亦碗歉倪音这剧第3类和对象举例第3类和对象举例作业:需需要要求求3个个长长方方柱柱的的体体积积,请请编编写写一一个个基基于于对对象象的程序。的程序。数据成员包括数据成员包括length(长)、(长)、width(宽宽)、height(高高)。要要求求用用成成员员函函数数实现以下功能:实现以下功能:1、由键盘分别输入、由键盘分别输入3个长方柱的长、宽、高;个长方柱的长、宽、高;2、计算长方柱的体积;、计算长方柱的体积;3、输出、输出3个长方柱体积;个长方柱体积;请编写程序,上机调试并运行。请编写程序,上机调试并运行。狐哀廉才灵劲芬笛崎醉恫焰肖邀翅焉挡韧器抨许丙炕胡申禽稻涧岛呵极艰第3类和对象举例第3类和对象举例本章作业1.分析下列程序的输出结果分析下列程序的输出结果(1)#includeusingnamespacestd;classLocationpublic:voidinit(inti=0,intj=0);voidsetA(intn1)A=n1;voidsetB(intn2)B=n2;intgetA()returnA;intgetB()returnB;private:intA,B;voidLocation:init(inti,intj)A=i;B=j; intmain()LocationX,Y;X.init(4);X.setA(10);coutX.getA(),X.getB()endl;Y.init(7,9);Y.setB(8);coutY.getA(),Y.getB()endl;return0;块瘪恰局萄恩脓惩到俊循蝴鬃化旦杉闸倦筛酱募侄绒趟桥诬寄怨猫尹坛鳞第3类和对象举例第3类和对象举例本章作业(2)下面的程序定义了一个下面的程序定义了一个ClockClock类,记录当前时间(小时和分钟),并可以类,记录当前时间(小时和分钟),并可以通过两个函数取到这两个私有成员。主函数定义一个通过两个函数取到这两个私有成员。主函数定义一个ClockClock对象,输出对象,输出他的当前时间,然后将时间增加一分钟,再输出增加后的时间。写出他的当前时间,然后将时间增加一分钟,再输出增加后的时间。写出程序运行结果。程序运行结果。#includeusingnamespacestd; classclockinthour;intminute;public:clock(void);voidinc_time(void);intpresent_hour(void)returnhour;intpresent_minute(void)returnminute;voidprint_time();clock:clock(void)hour=6;minute=59;芋孜碳洋妆迷伐娇语奇浸子椽辉柯镁依界舜图朋诗勇乘驮臭赦霍忧口谆蜜第3类和对象举例第3类和对象举例本章作业voidclock:print_time(void)coutNow,thetimeis:hour:;if(minute10)cout0;coutminute59)minute-=60;hour+;intmain()clockmyclock;myclock.print_time();myclock.inc_time();myclock.print_time();myclock.inc_time();myclock.print_time();return0;廷路桑株崇物途淑枢三哗蓝怯锭到痘缝痢猜筋陇添擞仪悔姚慎沁鹊色音申第3类和对象举例第3类和对象举例本章作业2. 2. 设计设计TestTest类,使如下程序的输出结果为:类,使如下程序的输出结果为: 测试结果:测试结果:68-55=1368-55=13intmain()Testa;a.init(68,55);a.print();return0;耗家稿族雇移苏够革侈掉笨陛懦乔肺颂迅紫群泛歼箍顷鳖蓑囤该烬谜逢俄第3类和对象举例第3类和对象举例本章作业3. 3. 改错题改错题(1)请用横线标出下面的程序错误语句所在行并说明出错原因请用横线标出下面的程序错误语句所在行并说明出错原因。#includeusingnamespacestd;classAprivate:inta;public:voidseta(intx)a=x;voidshowA()couta=aendl;intmain()Aobj;obj.a=3;obj.seta(53);obj.showA();return0; 狠癣没陡仟蔷篷矽巢槐盘驭膳批木沉索才龟奋非涵缔篡欢苦选伸完咯投图第3类和对象举例第3类和对象举例本章作业(2)请用横线标出下面的程序段错误语句所在行并说明出错原请用横线标出下面的程序段错误语句所在行并说明出错原因。因。classLocationintX,Y=20;private:intlength,height;public:floatradius;voidinit(intinitX,intinitY);intGetX();intGetY();峭束舆示介殴矩纽淑嫌莲筛戈筐潭种盔勾峪跑赵万靠唬俗联椽酵哑酞侯谦第3类和对象举例第3类和对象举例本章作业4.4.填空题填空题(1 1)在下面程序的横线处填上适当字句,使该程序执行结果为)在下面程序的横线处填上适当字句,使该程序执行结果为8 8。#include #include class Myclass class Myclass int X;int X; public: public: (1) (1) / / 为为X X置值置值 (2) (2) / / 取取X X值值;int main()int main() Myclass test; Myclass test; test.init(8); test.init(8); couttest.Getnum()endl; couttest.Getnum()endl; return 0; return 0; 胺邵夏探宗赚搁渣瑚始郧泥汗商揩狱墅吊跋仰农瞬耙屈仪许扑矩旺疽头泽第3类和对象举例第3类和对象举例本章作业(2 2)在下面的类定义中,私有成员包括)在下面的类定义中,私有成员包括 。classLocationintX,Y;protected:intW,Z;intSet(W,Z);private:intlength,height;public:voidinit(intx,inty);intGetX();intGetY();宣疑纠锋府弱筷音妹懂向陆情课甘精舟采埋柿棱欲檬长棚弱仕鉴恼炎这抨第3类和对象举例第3类和对象举例本章作业3. 3. 课后习题课后习题1. P261-11. P261-12. P261-22. P261-2,3 33. P261-43. P261-4,5 5瘫损特舌郴匪襟绥梆酗贺睡蔡液协几郡冷史萎忧狭娘泞洼钳棉精糜戏湍寅第3类和对象举例第3类和对象举例上机练习题目n实验目的实验目的n通过过上机练习学会类和对象的定义方法。通过过上机练习学会类和对象的定义方法。n了解下列各成员函数的特点:了解下列各成员函数的特点: (1)内联)内联 (2)重载)重载 (3)设置默认参数)设置默认参数柱步曼酬尺振侠傻燥虐暖捂思宫裂姥硼局胃畦祈岔滔籍又锦砚李独劝忘阶第3类和对象举例第3类和对象举例上机练习题目(一)教材中例题程序的调试(一)教材中例题程序的调试1. 例例8.12. 例例8.2 (1)程序)程序a ( 2)程序)程序b (3)程序)程序c3. 例例8.38.44. p258例题例题荷贱吱逻魂儒雏辈专贵沸笋猎郎膳柏猛坪访讽催去翅檀忌忿吞犁嗡徘耍滨第3类和对象举例第3类和对象举例上机练习题目(二)课件中典型例题程序的调试(二)课件中典型例题程序的调试1. 计算两数之和。计算两数之和。 (两数之和(两数之和2.cpp)2.例例1.日期类的定义和应用日期类的定义和应用(例(例1日期类日期类.cpp.cpp)3. 例例8.3(例(例8_3.cpp)4. 例例4.使使用用类类设设计计模模拟拟数数字字式式时时钟钟的的程程序序(例例4模模拟拟数字时钟数字时钟.cpp)危痕犁佰匀窝盂乡殉荡访癣察腻谚旦射互联性乐涂挑噎岁窍灶糖范瀑够袭第3类和对象举例第3类和对象举例上机练习题目(四)课后习题(四)课后习题1. p216第第23题题2. p127第第46题题贿颖藉煎恐羡妊疾张宝奋讽绑页懦辑腺堡搬销埋纯报相悦蜀瑰洲忙锻椰凡第3类和对象举例第3类和对象举例
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号