函数类与对象市公开课一等奖百校联赛特等奖课件.pptx
《函数类与对象市公开课一等奖百校联赛特等奖课件.pptx》由会员分享,可在线阅读,更多相关《函数类与对象市公开课一等奖百校联赛特等奖课件.pptx(112页珍藏版)》请在咨信网上搜索。
第三章第三章 函数、类与对象函数、类与对象第1页第一节第一节 C+函数函数第2页1.函数原型函数原型提供函数与编译器界面,它告诉编译器:(1)函数返回值类型 (2)函数参数个数和类型函数原型普通语法形式为:返回类型函数名(参数表);比如:#include“iostream.h”intmaxinum(intnum1,intnum2);main()intmax,n1,n2;cinn1n2;max=maxinum(n1,n2);coutmaxn2)?n1:n2;returnmax;第3页说明:(1)在程序中,要求一个函数原型出现在该函数调用语句之前。但当一个函数定义在前,而对它调用在后时,则无须给出原型。(2)函数原型参数表中可不包含参数名字,而只包含它们类型。intmaxinum(int,int);(3)注意函数说明部分和函数原型区分:参数,分号(4)C+参数说明必须放在函数名后括号内,不可放在函数说明部分与函数体之间。第4页(5)主函数main()无须进行原型说明。(6)原型中没有指出返回值函数,C+默认该函数返回类型是int。(7)注意C和C+区分:intf();C中:参数信息没有给出C+中:表示不带任何参数,与intf(void);等价因为有了原型,使C+轻易表示函数重载。第5页2.内联函数(inline)C+新增加一个特征,以提升程序执行速度。调用一个函数:(1)统计当前途序地址(2)将参数拷贝到堆栈中(3)转到存放器中统计该函数地址(4)执行函数,将返回值存放在一存放器中(5)离开该函数回到以前途序地址C+处理对象时经过调用对象公有组员函数来进行,函数调用比直接访问对象组员花费更多运行时间。第6页执行一个inline函数方式是直接将该函数程序码放入当初调用该inline函数程序中。比如:#include“iostream.h”#include“conio.h”inlinedoubleadd(doublex,doubley)return(x+y);voidmain()cout“2+2is:”add(2.0,2.0)endl;cout“2.2+3.134is:”add(2.2,3.134)endl;cout“13.13+3.234is:”add(13.13,3.234)endl;第7页经编译器编译后可视同:voidmain()cout“2+2is:”2.0+2.0endl;cout“2.2+3.134is:”2.2+3.134endl;cout“13.13+3.234is:”13.13+3.234endl;欲将一函数设定为inline函数,则必须完成以下两项工作:(1)在函数定义前加上关键字inline(2)该函数定义必须在第一次被调用前出现第8页注意:inline函数不是宏命令#definesquare(x)(x)*(x)调用时:intx=2;square(+x);编译器解释:(+x)*(+x)宏是属于文字替换,而inline函数是属于程序码上替换,但观念上还是属于普通函数使用方法。inlinedoublesquare(doublex)return(x*x);所以能够说inline函数使用要比宏来稳定可靠多了。但通常只有较短函数才定义为inline函数。第9页注意几点:(1)内联函数必须在使用之前申明或定义。#includeintadd(inta,intb);intmain()intx=add(1,3);coutxendl;return0;inlineintadd(intx,inty)returnx+y;#includeinlineintadd(intx,inty)returnx+y;intmain()intx=add(1,3);coutxendl;return0;第10页(2)限制内联函数大小。普通情况下,应控制在5行以内。(3)内联函数函数体内不能含有复杂结构控制语句,如:switch和while,假如内联函数函数体内有这些语句,则编译将该函数视同普通函数那样产生函数调用代码。(4)递归函数不能被用来作为内联函数。(5)若程序中相关键字register,则编译程序将忽略inline。第11页3.带缺省参数函数C+允许在定义函数时给其中某个或一些形式参数指定默认值,这么,当发生函数调用时,假如省略了对应位置上实参值时,则在执行被调函数时,以该形参默认值进行运算。#includevoidsum(intnum=10)inti,s=0;for(i=1;i=num;i+)s=s+i;coutsumissn;voidmain()sum(100);sum();第12页注意事项:(1)默认参数一般在函数说明中提供。如果程序中现有函数说明又有函数定义时,则定义函数时不允许再定义参数默认值。如果程序中只有函数定义,而没有说明函数,则默认参数才可出现在函数定义中。voidpoint(intx=10,y=20);voidmain()voidpoint(intx,inty)coutxendl;coutyendl;第13页(2)默认参数次序:假如一个函数中有多个默认参数时,则形参分布中,默认参数应从右至左逐步定义。如:voidmyfunc(inta=1,floatb,longc=20);/错误voidmyfunc(inta,floatb=2.1,longc=30);/正确(3)缺省参数能够是常数,也能够是全局变量,甚至能够是一个函数调用,但决不能是一个局部变量。如:inta=1;intfun(int);intg(intx=fun(a);第14页4.函数重载函数重载是指一个函数能够和同一作用域中其它函数含有相同名字,但这些同名函数参数类型、参数个数、返回值、函数功效能够完全不一样。#includevoidwhatitis(inti)coutthisisaninteger:iendl;voidwhatitis(charc)coutthisisastring:cy)z=x;elsez=y;return(z);voidmain()int(*p)(int,int);inta,b,c;p=max;cinab;c=p(a,b);coutc;第18页说明:(1)一个函数不能赋给一个不一致函数指针。例:int*fn2(charx,chary);int(*fp1)(chara,charb);fp1=fn2;/error(2)在函数指针变量赋值时,只须给出函数名,不能带参数,因为只是传递函数地址。例:int(*fp)(ints);intfn(inta);fp=fn(3);/error经过指针调用所指向函数:C中:(*p)(a,b);C+中:p(a,b);第19页(3)函数指针与其它数据类型指针尽管都是地址,但在类型上有很大差异,两类指针之间不允许相互赋值。例:int*ip;void(*fp1)(chara,charb);fp1=ip;/errorip=fp1;/error(4)对指向函数指针做象p+n,p+,p-等算数运算是无意义。第20页第二节第二节 定义类定义类第21页1.类定义类定义普通形式为:class类名private:数据组员或组员函数protected:数据组员或组员函数public:数据组员或组员函数;classTdateprivate:intmonth;intday;intyear;public:voidSet(int,int,int);intIsLeapYear();voidPrint();第22页类组员:数据组员和组员函数数据封装:有条件地限制类中组员被使用情况。说明:(1)private、protected和public能够按任意次序出现任意次。(2)数据组员能够是任何数据类型,不过不能用auto、register或extern进行说明。(3)不能在类申明中给数据组员赋值,C+要求,只有在类对象定义之后才能给数据组员赋初值。(4)不要忘了在类定义第二个大括号“”之后加上一个分号。第23页2.类实现类实现是指组员函数实现。有三种方式:(1)类定义和实现在同一个文件中,且都在类定义中完成;例1(2)类定义和实现在同一个文件中,函数实现放在类外完成;(3)类定义和实现在不一样文件中。第一个方式是在类申明中只给出组员函数原型,而组员函数体在类外部定义。这种组员函数定义普通形式是:返回类型 类名:函数名(参数表)函数体 详见例子第24页classTdateprivate:intmonth;intday;intyear;public:voidSet(intm,intd,inty)month=m;day=d;year=y;intIsLeapYear()return(year%4=0&year%100!=0)|(year%400=0);voidPrint()coutmonth“/”day“/”year;返回第25页classTdateprivate:intmonth;intday;intyear;public:voidSet(intm,intd,inty);intIsLeapYear();voidPrint();第26页voidTdate:Set(intm,intd,inty)month=m;day=d;year=y;intTdate:IsLeapYear()return(year%4=0&year%100!=0)|(year%400=0);voidTdate:Print()coutmonth“/”day“/”year;第27页从这个例子能够看出,即使函数Set(int,int)在类外部定义,但它们属于类Tdate组员函数,它们能够直接使用类Tdate中数据组员month,day和year。说明:(1)在所定义组员函数名之前应缀上类名,在类名和函数名之间应加上分隔符“:”(2)在定义组员函数时,对函数所带参数,不但要说明它类型,还要指出其参数名。(3)在定义组员函数时,其返回类型一定要与函数原型中申明返回类型匹配。第28页组员函数第二种定义方式是:将组员函数定义在类内部,即定义为内置函数。在C+中,能够用下面两种格式定义类内置函数:(1)隐式定义:所谓内置函数隐式定义,就是直接将函数定义在类内部。(2)显式定义 在定义内置函数时,为了书写清楚,仍将它放在类定义体外。但为了使它依然起内置函数作用,在函数定义前冠以关键字inline,以此显式地说明这是一个内置函数。inlinevoidTdate:Set(intm,intd,inty)month=m;day=d;year=y;第29页比如:定义一个线性表类#defineelemcharconstintDefautListSize=100;classalistprivate:intmaxSize,listSize;elem*listArray;public:alist(intsize=DefaultListSize);alist();voidcreate(int);voidinsert(constelem&,int);voiddelete(int);第30页alist:alist(intsize)maxSize=size;listSize=0;listArray=newelemmaxSize;alist:alist()deletelistArray;voidalist:create(intn)listSize=n;for(intk=1;klistArrayk;第31页voidalist:insert(constelem&x,inti)intj;if(ilistSize)|(i0)cout“error”;elseif(listSize=maxSize)cout=i;j-)listArrayj+1=listArrayj;listArrayi=x;listSize+;第32页voidalist:delete(inti)intj;if(ilistSize)|(i0)cout(“error”);elsefor(j=i+1;j公有组员函数名(实参表)指向对象指针-公有数据5.访问对象组员例:Tdate*p=&date1;p-set(10,22,1980);第36页6.结构、联合和类在C+中,存在三种类类型:类、结构和联合,它们分别使用三个关键字来申明和定义类:class、struct和union。第37页(1)在C+中,结构与类唯一区分是:缺省时,结构全部组员是公有 类全部组员是私有(2)在C+中,联合也是一个类,但联合全部组员只能为公有组员,关键字private和protected不能用于联合。说明:第38页第三节第三节 结构函数与析构函数结构函数与析构函数第39页1.结构函数结构函数(Constructor)定义了创建对象方法,提供了初始化对象一个简便伎俩。结构函数说明格式为:();例:classcircleprivate:intcenter_x,center_y;doubleradius;public:circle(intx,inty,doubler)radius=r;center_x=x;center_y=y;circlec1(0,1,5);第40页(4)在C+中,给对象数据组员初始化方法就是利用结构函数。(5)C+要求,每个类必须有一个结构函数。假如在类中没有显式定义结构函数时,则C+编译系统在编译时为该类提供一个默认结构函数,该默认结构函数是个无参函数,它仅负责创建对象,而不做任何初始化工作。(2)结构函数既可在类外定义,也可作为内联函数在类内定义,也允许重载。(3)结构函数既可定义成有参函数,也可义成无参函数,要依据问题需要来定。结构函数也能够有缺省参数,在使用时要预防二义性。说明:(1)结构函数与类同名,且没有返回值类型。第41页classcircleprivate:intcenter_x,center_y;doubleradius;public:circle(intx,inty,doubler)radius=r;center_x=x;center_y=y;circle(doubler)radius=r;center_x=0;center_y=0;第42页2.析构函数析构函数定义方式为:类名()函数体作用:用于执行一些清理任务。如释放分配给对象内存空间。classcircleprivate:intcenter_x,center_y;doubleradius;public:circle(intx,inty,doubler);circle()cout“Destructorisactive”;第43页(4)假如程序员在定义类时,没有为类提供析构函数,则系统会自动创建一个默认析构函数,其形式为:类名()(2)没有返回值,没有参数,不能随意调用,也没有重载,只是在类对象生命期结束时,系统自动调用。(3)在一个类中只能有一个析构函数。说明:(1)析构函数与类同名,但它前面必须加上()。第44页(6)对象被析构次序与对象建立时次序恰好相反。即最终结构对象先被析构。(5)对于一个简单类来说,大多能够直接使用系统提供默认析构函数。不过,假如在类对象中分配有动态内存(如:用new申请分配内容)时,就必须为该类提供适当析构函数,完成清理工作。第45页includeclassApublic:A()cout“InclassA.n”;A()cout“DestructingclassA.n”;classBpublic:B()cout“InclassB.n”;B()cout“DestructingclassB.n”;voidmain()Aa1,a2;Bb1;假如一个类对象是另一个类数据组员时,则各对象结构函数和析构函数调用次序是怎样?第46页includeclassStudent public:Student()cout“constructing student.n”;semesHours=100;gpa=3.5;Student()cout“destructing student.n”;private:int semesHours;float gpa;第47页classTeacher public:Teacher()cout“constructing teacher.n”;Teacher()cout“destructing teacher.n”;第48页classTutorPair public:TutorPair()cout“constructing tutorpair.n”;noMeetings=0;TutorPair()cout“destructing tutorpair.n”;private:Studentstudent;Teacherteacher;intnoMeetings;第49页voidmain()TutorPair tp;cout“back in main.n”;运行结果:constructingstudent.constructingteacher.constructingtutorpair.backinmain.destructingtutorpair.destructingteacher.destructingstudent.第50页总结:(1)功效结构函数便是对象用来设定本身起始值函数;析构函数与结构函数对应,其作用是用来释放新定义一个对象时,由结构函数向系统所要求存放空间。(2)工作过程:自动调用(3)使用说明i.结构函数和析构函数函数名必须与该类同名,析构函数名前方还需要加一个号。第51页ii.结构函数和析构函数无返回值,不可说明返回值类型iii.结构函数可带参数,能够重载;析构函数不能够有任何参数,一个类只允许有一个唯一析构函数,不可重载。iv.当一个类已经定义好后,以后只要以该类去定义一对象,则结构函数就会自动被调用(由编译器);当对象离开其有效范围时,便会自动调用析构函数。v.结构函数不可显示调用,析构函数可显示调用。vi.结构函数和析构函数均可系统缺省。第52页3.带参数结构函数与重载结构函数与普通组员函数一样,C+允许重载结构函数。#includeclassTdateprivate:intmonth;intday;intyear;public:Tdate();Tdate(intd);Tdate(intm,intd);/Tdate(intm,intd=12);Tdate(intm,intd,inty);第53页Tdate:Tdate()month=4;day=15;year=1995;coutmonth“/”day“/”yearendl;Tdate:Tdate(intd)month=4;day=d;year=1996;coutmonth“/”day“/”yearendl;Tdate:Tdate(intm,intd)month=m;day=d;year=1997;coutmonth“/”day“/”yearendl;第54页Tdate:Tdate(intm,intd,inty)month=m;day=d;year=y;coutmonth“/”day“/”yearendl;voidmain()Tdateaday;Tdatebday(10);Tdatecday(2,12);Tdatedday(1,2,1998);第55页重载函数使用缺省参数时,谨防二义性。比如:classxpublic:x();x(inti=0);voidf()xa(10);xb;/二义性第56页4.拷贝结构函数拷贝结构函数是C+中引入一个新结构函数。定义一个拷贝结构函数方式是:类名(const类名&形式参数)函数体由此可看出:(1)拷贝结构函数名称与类名称相同,且它只有一个参数,该参数就是对该类对象引用。(2)拷贝结构函数功效是用于实现对象值拷贝,经过将一个同类对象值拷贝给一个新对象,来完成对新对象初始化,即用一个对象去结构另外一个对象。第57页例:Example是一个人员信息类。用普通结构函数生成obj1,用拷贝结构函数生成obj2。#include#includeclassExampleprivate:char*name;intnum;public:Example(inti,char*str)/结构函数定义name=str;num=i;第58页Example(constExample&x)/拷贝结构函数定义num=x.num;voidlist()/定义显示函数listcout数据组员num值=numendl*pc=8;(p-*pfun)(5);第74页3.this指针this指针是一个隐含于每一个组员函数中特殊指针。它指向正在被该组员函数操作对象,也就是要操作该组员函数对象。intstring:get_length()returnlength;x.get_length();对象x调用组员函数get_length(),则函数get_length()this指针就指向对象x第75页说明:(1)this指针是一个隐含指针,不能被显示申明,它只是一个形参,一个局部变量,它在任何一个非静态组员函数里都存在,它局部于某一对象。(2)this指针是一个常指针,能够表示为(但不能显示申明):X*constthis所以,this指针不能被修改和赋值。第76页(3)不论在类外还是类内访问类组员都需要使用对象.组员或指向对象指针组员类内直接访问组员方式实际上就是this组员方式。(4)this指针主要用于运算符重载和自引用以及将组员函数返回值设定为所属类类型等场所。第77页例1:在一个双向链表中插入一个链classdlinkdlink*pre;dlink*suc;public:voidappend(dlink*p);voiddlink:append(dlink*p)psuc=suc;ppre=this;/this显示使用sucpre=p;suc=p;第78页例2:设计一个复数类,可完成对复数进行加减运算并输出功效。#include“iostream.h”#include“stdio.h”#include“conio.h”classcomplexdoublere,im;public:complex(doubler=0,doublei=0);complex(constcomplex&a);complex&add(complex&a);complex&sub(complex&a);voidshow();第79页complex:complex(doubler,doublei)re=r;im=i;complex:complex(constcomplex&a)re=a.re;im=a.im;complex&complex:add(complex&a)re=re+a.re;im=im+a.im;return*this;注意:C语言怎样定义?voidadd(int,int);第80页complex&complex:sub(complex&a)re=re-a.re;im=im-a.im;return*this;voidcomplex:show()if(im0)coutreim“i”endl;elsecoutre“+”im“i”endl;第81页voidmain()complexca(10,20);complexcb(-5,-10);cout“ca=“;ca.show();cout“cb=“cb.show();complexcadd=ca.add(cb);complexcsub=ca.sub(cb);/注意结果cout“ca+cb=“cadd.show();cout“ca-cb=”csub.show();第82页(5)能够使用const说明符将this申明为指向常量常指针(常组员函数)比如:#includeclassSinta;public:intg()return+a;/gthis是常指针inth()const/hthis是指向常量常指针return+a;/错误;h()后跟一个const,说明此时this类型是:constS*constthish()称为const组员函数第83页第五节第五节 静态组员静态组员 第84页1.静态数据组员 在一个类中,若将一个数据组员说明为static,这种组员称为静态数据组员。与普通数据组员不一样,不论建立多少个类对象,都只有一个静态数据拷贝。classxstaticinti;ints;xa1,a2,a3,a4;a1sa2s is a3sa4第85页比如:#includeclassStudentstaticintcount;intStudentNo;public:Student()count+;/设计不完善StudentNo=count;voidprint()cout“student=“StudentNo;cout”count=”countendl;intStudent:count0;main()StudentStudentl;Studentl.print();StudentStudent2;Studentl.print();Student2.print();StudentStudent3;Studentl.print();Student2.print();Student3.print();StudentStudent4;Studentl.print();Student2.print();Student3.print();Student4.print();return0;第86页说明:(1)静态数据组员属于类(准确地说,是属于类中一个对象集合),而不像普通数据组员那样属于某一对象,所以能够使用“类名:访问静态数据组员。比如上面例子中Student:count。(2)静态数据组员不能在类中进行初始化,因为在类中不给它分配内存空间,必须在类外其它地方为它提供定义。普通在main()开始之前,类申明之后特殊地带为它提供定义和初始化。缺省时,静态组员被初始化为零。第87页(3)静态数据组员与静态变量一样,是在编译时创建并初始化。它在该类任何对象被建立之前就存在,它能够在程序内部不依赖于任何对象被访问。比如:#includeclassmyclasspublic:staticinti;;intmyclass:i;main()myclass:i200;第88页(4)C+支持静态数据组员个主要原因是能够无须使用全局变量。依赖于全局变量类几乎都是违反面向对象程序设计封装原理。静态数据组员主要用途是定义类各个对象所公用数据,如统计总数、平均数等。第89页2.静态组员函数在类定义中,前面有static说明组员函数称为静态组员函数。静态组员函数属于整个类,是该类全部对象共享组员函数,而不属于类中某个对象。includeclasssmall_catdoubleweight;staticdoubletotal_weight;staticdoubletotal_number;public:small_cat(doublew)weightw;total_weight+w;total_number+;voiddisplay()coutweight“n”;staticvoidtotal_disp()couttotal_number;couttotal_weightmember_int=i;第94页第六节第六节 友元友元第95页在不放弃私有数据安全性情况下,使得类外部函数或类能够访问类中私有组员,在C+中就用友元作为实现这个要求辅助伎俩。友元是一扇通向私有组员后门。友元既能够是不属于任何类普通函数,也能够是另一个类组员函数,还能够是整个一个类(这么,这个类中全部组员函数都能够成为友元函数)。第96页1.友元函数友元函数不是当前类组员函数,而是独立于当前类外部函数,但它能够访问该类对象全部组员,包含私有组员和公有组员。在类定义中申明友元函数时,需在其函数名前加上关键字friend。此申明能够放在公有部分,也能够放在私有部分。友元函数能够定义在类内部,也能够定义在类外部。第97页比如:#include#includeclassgirlchar*name;intage;public:girl(char*n,intd)name=newcharstrlen(n)+1;strcpy(name,n);aged;friendvoiddisp(girlx);/申明girl()deletename;voiddisp(girlx)/定义coutx.namex.ageendl;voidmain()girle(”Chen”,18);disp(e);/调用第98页说明:(1)友元函数即使能够访问类对象私有组员,但它毕竟不是组员函数。所以,在类外部定义友元函数时,无须像组员函数那样,在函数名前加上“类名:”。(2)友元函数普通带有一个该类入口参数。因为友元函数不是类组员,所以它不能直接引用对象组员名字,也不能经过this指针引用对象组员,它必须经过作为入口参数传递进来对象名或对象指针来引用该对象组员。第99页(3)当一个函数需要访问多个类时,友元函数非常有用,普通组员函数只能访问其所属类,不过多个类友元函数能够访问对应全部类数据。(4)友元函数经过直接访问对象私有组员,提升了程序运行效率。在一些情况下,如运算符被重载时,需要用到友元。不过友元函数破坏了数据隐蔽性,降低了程序可维护性,这与面向对象程序设计思想是背道而驰,所以使用友元函数应慎重。第100页2.友元组员函数一个类组员函数也能够作为另一个类友元,这种组员函数不但能够访问自己所在类对象中私有组员和公有组员,还能够访问friend申明语句所在类对象中私有组员和公有组员。classboypublic:voidmember_fun();classgirlfriendvoidboy:member_fun();第101页比如:includeincludeclassgirl;classboychar*name;intage;public:boy(char*n,intd)namenewcharstrlen(n)+1;strcpy(name,n);aged;voiddisp(girl&);boy()deletename;classgirlchar*name;intage;public:girl(char*n,intd)namenewcharstrlen(n)+1;strcpy(name,n);aged;friendvoidboy:disp(girl&);girl()deletename;voidboy:disp(girl&x)coutnameageendl;coutx.namex.ageendl;第102页说明:(1)一个类组员函数作为另一个类友元函数时,必须先定义这个类。而且在申明友元函数时,要加上组员函数所在类类名,如:friendvoidboy:disp(girl&);(2)注意向前引用第103页3.友元类一个类也能够作为另一个类友元。这种友元类说明方法是在另一个类申明中加入语句friend类名(即友元类类名);”,此语句能够放在公有部分也能够放在私有部分,比如:classY;classXfriendY;当一个类被说明为另一个类友元时,它全部组员函数都成为另一个类友元函数,这就意味着作为友元类中全部组员函数都能够访问另一个类中私有组员。第104页说明:(1)友元关系是单向,不含有交换性。若类X是类Y友元(即在类Y定义中申明X为friend类),类Y是否是X友元,要看在类中是否有对应申明。(2)友元关系也不含有传递性,若类X是类Y友元,类Y是类Z友元,不一定类X是类Z友元。第105页类对象作为组员类对象作为组员第106页在类定义中定义数据组员普通都是基本数据类型。不过类中组员也能够是对象,叫做对象组员。使用对象组员着主要注意问题是结构函数定义方式,即类内部对象初始化问题。含有对象组员类,其结构函数和不含对象组员结构函数有所不一样,比如有以下类:class X类名1 组员名1;类名2 组员名2;类名n 组员名n;;普通来说,类X结构函数定义形式为:X:X(参数表):组员名l(参数表1),组员名n(参数表n)第107页 int i;A int i;B x;int j;int i;int x,y,z;A C i;B x;float a,b;D j;E y;第108页比如:classinnerintx;public:inner(intz)x=z;voidwrite()coutxendl;classouterinty;innerx,r;public:outer();voidwrite();outer:outer(intp1,intp2,intp3):x(p1),r(p2)y=p3;voidouter:write()couty;x.write();r.write();对象全部操作都应该由它自己所在类完成,在其它地方包括到对象操作只编写对该对象所在类操作调用程序代码。第109页对于以下各类,应怎样编写其结构函数?A:inti;B:inti;Ax;D:inti;Cx;By;说明:在C+中,不论类与类之间嵌套层次有多复杂,都遵照以下标准:类与类之间,你做你,我做我,以接口沟通。Ainti,j;A(int,int);Bintk;Ax1;B(int,int,int);Cintl;Ax2;Bx3;C(int,int,int,int,int,int);Dintm;Ax4;Cx5;D(?);Dobj(1,2,3,4,5,6,7,8,9);第110页classAinti;intj;public:A(inta,intb)i=a;j=b;couti/tjendl;classBintl;Ax1;public:B(inta,intb,intc):x1(a,b)l=c;coutlendl;第111页classCintk;Ax2;Bx3;public:C(inta,intb,intc,intd,inte,intf):x2(a,b),x3(c,d,e)k=f;coutfendl;classDintm;Ax4;Cx5;public:D(inta,intb,intc,intd,inte,intf,intg,inth,inti):x4(a,b),x5(c,d,e,f,g,h)m=i;coutmendl;voidmain()Dobj(1,2,3,4,5,6,7,8,9);注:先执行对象组员结构函数,再执行该类结构函数。第112页- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 函数 对象 公开 一等奖 联赛 特等奖 课件
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【a199****6536】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【a199****6536】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【a199****6536】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【a199****6536】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文