![第五章特殊函数和成员公开课一等奖优质课大赛微课获奖课件_第1页](http://file4.renrendoc.com/view/fc41516384ee5e6fa09c54264a002a3e/fc41516384ee5e6fa09c54264a002a3e1.gif)
![第五章特殊函数和成员公开课一等奖优质课大赛微课获奖课件_第2页](http://file4.renrendoc.com/view/fc41516384ee5e6fa09c54264a002a3e/fc41516384ee5e6fa09c54264a002a3e2.gif)
![第五章特殊函数和成员公开课一等奖优质课大赛微课获奖课件_第3页](http://file4.renrendoc.com/view/fc41516384ee5e6fa09c54264a002a3e/fc41516384ee5e6fa09c54264a002a3e3.gif)
![第五章特殊函数和成员公开课一等奖优质课大赛微课获奖课件_第4页](http://file4.renrendoc.com/view/fc41516384ee5e6fa09c54264a002a3e/fc41516384ee5e6fa09c54264a002a3e4.gif)
![第五章特殊函数和成员公开课一等奖优质课大赛微课获奖课件_第5页](http://file4.renrendoc.com/view/fc41516384ee5e6fa09c54264a002a3e/fc41516384ee5e6fa09c54264a002a3e5.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第五章特殊函数和组员5.1对象组员初始化5.2静态组员5.3友元函数5.4const对象5.5数组和类5.6指向类组员函数指针5.7求一元二次方程根1第1页第1页第五章特殊函数和组员5.1对象组员初始化对象能够做类组员classA{……类名1组员1;类名2组员2;……};当A类产生对象时要初始化A所有组员,因此会调用这些对象结构函数。
类构成元素?
数据组员和 组员函数2第2页第2页5.1对象组员初始化对象能够做类组员classA{类名1组员1;类名2组员2;……};//A类结构函数定义下列:
A::A(参数0):组员1(参数1),组员2(参数2){……}什么是组员初始化?
定义对象时对其数据组员赋初值初始化方式有几种?1)结构函数2)初始化列表哪种初始化方式?2)初始化列表3第3页第3页5.1对象组员初始化对象能够做类组员classA{类名1组员1;类名2组员2;};A::A(参数0):组员1(参数1),组员2(参数2){……}注意:A产生对象时,先调用对象组员结构函数,初始化对象组员,然后才执行A结构函数;对象组员初始化顺序与这些对象在类A中阐明顺序,与他们在初始化列表中顺序无关。4第4页第4页5.1对象组员初始化对象能够做类组员classA{类名1组员1;类名2组员2;};A::A(参数0):组员1(参数1),组员2(参数2){……}注意:A类结构函数中未给出组员对象初始化,组员对象产生时调用无参结构函数;若此时组员所在类中没有无参结构函数则报错!5第5页第5页请给出下面程序执行结果classA{intx1,y1;public:A(intc=0,intd=0){x1=c;y1=d;cout<<"A结构!"<<x1<<y1<<endl;}};classB{Aa;intx2,y2;public:B(intc=0,intd=0){x2=c;y2=d;cout<<"B结构!"<<x2<<y2<<endl;}};voidmain(){ Bb;}6第6页第6页找出下面程序错误classA{intx1,y1;public:A(intc,intd){x1=c;y1=d;cout<<"A结构!"<<x1<<y1<<endl;}};classB{Aa;intx2,y2;public:B(intc=0,intd=0){x2=c;y2=d;cout<<"B结构!"<<x2<<y2<<endl;}};voidmain(){ Bb;}在创建对象b时,在类A中没有无参结构函数,无法对对象组员a进行初始化7第7页第7页给出程序运营结果classA{intx1,y1;public:A(intc,intd){x1=c;y1=d;cout<<"A结构!"<<x1<<y1<<endl;}};classB{Aa;intx2,y2;public:B(intc=0,intd=0):a(1,2){x2=c;y2=d;cout<<"B结构!"<<x2<<y2<<endl;}};voidmain(){ Bb;}8第8页第8页对象组员初始化9第9页第9页对象组员初始化总结对象能够做类组员//A类结构函数定义下列:
A::A(参数0):组员1(参数1),组员2(参数2){……}A产生对象时,先调用对象组员结构函数,初始化对象组员,然后才执行A结构函数;对象组员初始化顺序与这些对象在类A中阐明顺序相同,与他们在初始化列表中顺序无关。10第10页第10页const组员和引用组员初始化数据组员不能在定义时初始化数据组员操作语句必须放在组员函数中引用组员不能初始化为常量引用const组员和引用组员必须在结构函数初始化列表中初始化初始化列表形式结构函数:A::A(参数0):组员1(参数1),组员2(参数2){……}11第11页第11页12第12页第12页5.2静态组员类简朴组员函数是指申明中不含const、volatile、static关键字函数。
假如类组员(数据组员或组员函数)使用关键字static修饰,则这样组员称为静态组员。
静态数据组员或静态组员函数如staticintx;
C++中关键字const、volatile、static。13第13页第13页5.2静态组员定义时使用了static,则组员为静态组员静态数据组员初始化必须在类体外按照下列格式:类型类名::静态组员名=值;不可在结构函数中初始化14第14页第14页定义时使用了static,则组员为静态组员1,静态数据组员必须在类体外按照下列格式:类型类名::静态组员名=值;进行初始化,不可在结构函数中初始化2,static组员所有者是类, 而不是对象;3,静态组员被该类所有对象所共有,所有对象均可访问静态组员4,静态组员不依赖于对象而存在对象不存在时静态组员已存在15第15页第15页定义时使用了static,则组员为静态组员5,静态组员函数不可直接使用非静态组员,但可通过对象使用非静态组员6,静态组员仍然遵循public,private,protected访问准则。16第16页第16页定义时使用了static,则组员为静态组员7.静态组员函数没有this指针,它不能使用类中定义非静态组员
8,静态组员函数不能阐明为虚函数9,未定义对象时,能够通过类使用静态组员按下列格式:类名::静态数据组员名类名::静态组员函数();17第17页第17页18第18页第18页找出程序中错误在静态函数中访问了非静态数据组员静态数据组员初始化无类型阐明19第19页第19页找出程序中错误静态数据组员初始化无类型及所属类限定阐明20第20页第20页1,静态组员函数与类名连用,可通过对象使用classtest{
staticintx; intn;public: test(inta=0,intb=0){x=a;n=b;}
staticintfunc(){returnx;;} intgetn(){returnn;}};inttest::x=25;voidmain(){ cout<<test::func()<<endl; testb,c; cout<<b.func()<<endl;}21第21页第21页2,在没有建立对象之前,静态组员已经存在classtest{
staticintx; intn;public: test(inta=0,intb=0){x=a;n=b;}
staticintfunc(){returnx;;} intgetn(){returnn;}};inttest::x=25;voidmain(){ cout<<test::func()<<endl; testb,c; cout<<b.func()<<endl;}对静态数据组员初始化对静态组员函数访问22第22页第22页3,静态组员是类组员不是对象组员classtest{
staticintx; intn;public: test(inta=0,intb=0){x=a;n=b;}
staticintfunc(){returnx;;} intgetn(){returnn;}};inttest::x=25;voidmain(){ cout<<test::func()<<endl; testb,c; cout<<b.func()<<endl;}23第23页第23页4,静态组员被类所有对象共享classtest{
staticintx; intn;public: test(inta=0,intb=0){x=a;n=b;}
staticintfunc(){returnx;;} intgetn(){returnn;}};inttest::x=25;voidmain(){ cout<<test::func()<<endl; testb,c; cout<<b.func()<<c.func()<<endl;}24第24页第24页classX{charch;staticints;…...};intX::s=0;Xa,b,c,d;
b.s c.sd.s示例:a.sstaticints;5.4静态组员第25页第25页5,静态组员函数不可使用非静态组员(包括组员函数和数据组员)classtest{
staticintx; intn;public: test(inta=0,intb=0){x=a;n=b;}
staticintfunc(){f();returnx;} intf(){……;}};inttest::x=25;错:在静态函数中调用了非静态函数!26第26页第26页5,静态组员函数不可使用非静态组员(包括组员函数和数据组员)classtest{
staticintx; intn;public: test(inta=0,intb=0){x=a;n=b;}
staticintfunc(){n=5;returnx;} intf(){……;}};inttest::x=25;错:在静态函数中使用了非静态数据组员!27第27页第27页5,静态组员函数不可使用非静态组员(包括组员函数和数据组员)classtest{
staticintx; intn;public: test(inta=0,intb=0){x=a;n=b;}
staticintfunc(){returnx;} intf(){x=5;func();//能够使用x与 func函数
}};inttest::x=25;普通函数能够使用静态数据组员或静态函数!28第28页第28页//例5-13静态数据组员阐明和初始化
#include<iostream.h>classcounter{staticintnum;public:voidsetnum(inti){num=i;} voidshownum(){cout<<num<<'\t';}};intcounter::num=0; voidmain(){countera,b;a.shownum();b.shownum();a.setnum(10);a.shownum();b.shownum();}第29页第29页//例5-13静态数据组员阐明和初始化#include<iostream.h>classcounter{staticintnum;public:voidsetnum(inti){num=i;} voidshownum(){cout<<num<<'\t';}};intcounter::num=0;
voidmain(){countera,b;a.shownum();b.shownum();a.setnum(10);a.shownum();b.shownum();}申明与定义静态数据组员第30页第30页//例5-13静态数据组员阐明和初始化#include<iostream.h>classcounter{staticintnum;public:
voidsetnum(inti){num=i;} voidshownum(){cout<<num<<'\t';}};intcounter::num=0; voidmain(){countera,b;a.shownum();b.shownum();a.setnum(10);a.shownum();b.shownum();}组员函数访问
静态数据组员第31页第31页//例5-13静态数据组员阐明和初始化#include<iostream.h>classcounter{staticintnum;public:voidsetnum(inti){num=i;} voidshownum(){cout<<num<<'\t';}};intcounter::num=0; voidmain(){countera,b;
a.shownum();b.shownum();a.setnum(10);a.shownum();b.shownum();}调用组员函数访问
私有静态数据组员第32页第32页//例5-13静态数据组员阐明和初始化#include<iostream.h>classcounter{staticintnum;public:voidsetnum(inti){num=i;} voidshownum(){cout<<num<<'\t';}};intcounter::num=0; voidmain(){countera,b;a.shownum();b.shownum();a.setnum(10);a.shownum();b.shownum();}访问同一个
静态数据组员第33页第33页5.2静态组员---静态对象静态对象是由static定义对象特点:一旦定义始终存在于内存中,直到程序结束才释放复合语句内定义变量只在复合语句内有效,符合语句执行完毕,变量释放内存。34第34页第34页5.2静态组员---静态对象35第35页第35页5.2静态组员---静态对象对于静态对象1,碰到定义则调用结构函数,程序结束调用析构函数2,结构函数只调用一次,析构函数也只调用一次36第36页第36页5.3友元函数
采用类机制后实现了数据隐藏与封装,类数据组员普通定义为私有组员,组员函数普通定义为公有,依此提供类与外界间通信接口。有时一些函数不是类一部分,但又需要频繁地访问类数据组员,这时能够将这些函数定义为该函数友元函数。除了友元函数外,尚有友元类,两者统称为友元。友元不是类组员函数,但能够访问类私有组员,破坏了类封装性和隐藏性;提升了程序运营效率(即减少了类型检查和安全性检查等都需要时间开销)。37第37页第37页5.3友元函数友元函数是定义在类外普通函数,它不属于任何类,能够直接访问类私有组员;需要在类定义中加以申明,申明格式下列:
friend
类型函数名(形式参数);
友元函数申明能够放在类私有部分,也能够放在公有部分,它们是没有区别。
一个函数能够是多个类友元函数,只需要在各个类中分别申明。友元函数调用与普通函数调用方式和原理一致。
38第38页第38页5.3友元函数一个友元类/函数/组员函数能够通过对象使用另一个类私有组员。友元函数能够访问
对象私有组员,公有组员和保护组员。友元能够是一个类或函数。友元需通过对象、对象引用、对象指针来使用类组员。39第39页第39页5.3友元函数友元三种形式:1.普通函数作一个类友元2.a类组员函数作b类友元3.a类作为b类友元40第40页第40页1,普通函数作一个类友元在类体内用friend对普通函数f进行申明,则f成为类友元函数在类外对f函数进行定义, f函数不是类组员函数友元申明能够在类private和public部分为何说友元破坏了类封装性?普通友元函数能够通过对象、对象引用、对象指针使用对象私有组员。41第41页第41页1,普通函数作一个类友元在类体内需要对友元函数进行申明classpoint{ doublex,y;public: point(doublexi,doubleyi){x=xi;y=yi;}
frienddoubledist(point&p1,point&p2);};doubledist(point&p1,point&p2){ doubledx=p1.x-p2.x; doubledy=p1.y-p2.y; returnsqrt(dx*dx+dy*dy);}42第42页第42页classpoint{ doublex,y;public: point(doublexi,doubleyi){x=xi;y=yi;}
frienddoubledist(point&p1,point&p2);};doubledist(point&p1,point&p2){ doubledx=p1.x-p2.x; doubledy=p1.y-p2.y; returnsqrt(dx*dx+dy*dy);}voidmain(){ pointp1(1.1,2.2),p2(3.3,4.4); cout<<dist(p1,p2)<<endl;}43第43页第43页classpoint{ doublex,y;public: point(doublexi,doubleyi){x=xi;y=yi;}
frienddoubledist(pointp1,pointp2);};doubledist(pointp1,pointp2){ doubledx=p1.x-p2.x; doubledy=p1.y-p2.y; returnsqrt(dx*dx+dy*dy);}voidmain(){ pointp1(1.1,2.2),p2(3.3,4.4); cout<<dist(p1,p2)<<endl;}44第44页第44页引用做形参和对象做形参区别是什么??对象做形参,形参对象分派内存,
会引起复制结构函数调用
引用做形参,形参不分派内存,不调用复制结构函数引用做形参,形参改变会引起实参改变指针做形参也可实现,注意其形式什么?45第45页第45页友元函数使用(定义变形---对象引用做形参)引用形参函数调用实参是什么?引用形参实参对象46第46页第46页友元函数使用(定义变形---对象指针做形参)指针形参函数调用实参是什么?指针形参实参地址47第47页第47页2,A类组员函数作B类友元假定类A中有组员函数f(),能够在类B中申明类A组员函数f()为类B友元申明函数f时需限定该函数f是类A组员函数在f中访问B组员时,需通过对象、引用、指针来进行访问。48第48页第48页49第49页第49页这样定义有错程序无法执行,!!!!classTwo不完全申明时不能定义对象和引用50第50页第50页这样定义有错程序无法执行,!!!!classTwo不完全申明时不能定义对象和引用51第51页第51页52第52页第52页请写出程序运营结果!53第53页第53页3,A类作B类友元在类B中申明类A为B友元格式:classB{。。。。。friendclassA。。。。。}如此申明之后,B组员函数,可访问类A私有组员。能够通过A类对象直接访问类A私有组员,54第54页第54页3,A类作B类友元classTwo{private:inty;public:friendclassOne;};classOne{private:intx;public:One(inta,Two&r,intb){x=a;r.y=b;}voidDisplay(Two&t);};voidOne::Display(Two&r){cout<<x<<r.y<<endl;}55第55页第55页3,A类作B类友元voidmain(){ Twoobj2; Oneobj1(23,Obj2,55);
obj1.Display(Obj2);}56第56页第56页问题:classTwo申明能不能省略?fun函数定义可否放在classTwo定义前57第57页第57页58第58页第58页总结:友元申明与访问控制无关,在private和public后申明效果相同。注意:友元关系是单向,不能传递若A是B友元,B是C友元,A不能自动称为C友元。友元关系不含有互换性若A是B友元,则B不一定是A友元59第59页第59页总结:友元函数友元三种形式:1,普通函数作一个类友元2,a类组员函数作b类友元3,a类作为b类友元60第60页第60页5.4const对象const可限定变量、指针、对象、函数、函数参数、数据组员、组员函数。表示不可改变。const变量定义时需要初始化。constintx;constintx=0;constint*p;int*constp;constint*constp;61第61页第61页5.4const对象1,常量组员const组员包括:常量数据组员(const数据组员)常引用(const限定引用)静态常数据组员(staticconst数据组员)尤其注意:常量数据组员和常引用组员必须在结构函数初始化列表中进行初始化。62第62页第62页5.4const对象1,常量组员const组员包括:常量数据组员(const数据组员)常引用(const限定引用)静态常数据组员(staticconst数据组员)尤其注意:静态常数据组员保留静态组员特点,需要在类外按静态组员初始化方式进行初始化63第63页第63页例题:5.764第64页第64页5.4const对象1.常量组员const组员2.const引用作函数参数65第65页第65页5.4const对象1,常量组员const组员包括:常量数据组员(const数据组员)常引用(const限定引用)静态常数据组员(staticconst数据组员)请注意三种const组员初始化方式!!!!66第66页第66页2,const引用作函数参数引用作形参特点:引用作形参,形参不分派内存形参改变会使得实参改变,有时需要使用引用作形参,但要求形参不能改变此时可使用const限定67第67页第67页classtest{ private:intx; public:test(inta=0){x=a;} voidsetx(constint&y) {x=y;y++;} voidget() {cout<<x<<endl;} };voidmain(){intx=5;testa; a.setx(x); a.get();}找出程序中错误改变了常引用形式参数值68第68页第68页3,常对象(const对象)对象申明前加上const限定,则对象不可改变,即对象数据组员值不可改变。常对象在申明时必须同时进行初始化。申明格式:类名const对象名(参数表);或const类名对象名(参数表);如:baseconsta(25,68);如此定义a对象内容不可变!!!!!69第69页第69页basecosnta(25,68);constbaseb(21,32);如此定义a,b对象内容不可变!!!!!const对象只能调用const组员函数const函数中不允许使用改变变量或组员值语句70第70页第70页71第71页第71页找出程序中错误常对象调用了普通组员函数72第72页第72页4,const函数定义函数时在函数阐明后加const限定,则函数为const函数const函数中不允许使用改变变量或组员值语句const限定函数与未加const限定同名函数可重载。const对象能够调用const函数,但不能调用普通函数;普通对象能够调用const函数。73第73页第73页4,const函数定义函数时在函数首部后加const限定,则函数为const函数const不可限定析构函数和结构函数。74第74页第74页请给出程序运营结果75第75页第75页总结:1,const数据组员必须在结构函数初始化列表中进行初始化。2,const限定组员函数内不可出现任何改变变量值语句。3,const限定对象不能调用任何非const组员函数4,const限定引用做参数时,函数体内不可出现改变参数值语句。问题:非const对象可否使用const函数?76第76页第76页classPoint{ private:intx,y; public: Point(inta=0,intb=0){x=a;y=b;} voidset(inta,intb) {x=a;y=b;} voidget() {cout<<x<<y<<endl;} };Pointa;Pointb(5);Pointc(8,9);5.5数组和类问题:Point类创建对象方式有几种?77第77页第77页5.5数组和类类可定义对象数组。inta[5];inta[5]={1,2,3,4,5};pointp[3];pointp[3]={point(1,2),point(3,4),point(5,6)};定义数组时未初始化调用point()形式结构函数定义数组并初始化调用point(a,b)形式结构函数使用数组中元素时利用:point[i]形式point[i]使用同普通对象使用方式相同78第78页第78页类可定义对象数组,可定义指向对象指针数组名是数组在内存中首地址指针能够存储地址,可用指针指向数组pointa[3]={point(1,2),point(3,4),point(5,6)};point*p;p=a;//p指向数组aa[1].show();P->show();79第79页第79页请给出程序运营结果80第80页第80页请给出程序运营结果81第81页第81页5.5数组和类定义对象指针数组int*p;表示定义一个指针变量intp[5];表示定义一个数组。int*p[5]表示定义一个数组中有5个元素,每个元素是一个指针。这类数组称为指针数组。point*p;p=newpoint;p=newpoint(1,2);82第82页第82页5.5数组和类定义对象指针数组point*p[3];p[0]=newpoint(1,2);p[1]=newpoint(3,4);p[2]=newpoint(5,6);通过p[0]使用p[0]指向对象。p[0]->show();可通过循环使用p[i]指向对象。83第83页第83页5.5数组和类定义指向对象指针数组,并初始化。point*p[3]={newpoint(1,2),newpoint(3,4),newpoint(5,6)};84第84页第84页test类仍然使用刚刚定义,请更正main中错误错误:Two[i]是指针,而不是对象,不能用.操作符85第85页第85页test类仍然使用刚刚定义,请更正main中错误86第86页第86页5.6指向组员函数指针函数被调用时需要调入内存函数有地址:存储函数内存单元首地址指针能够存储地址存储函数地址指针称为指向函数指针定义形式:类型(*指针名)(参数类型);函数指针指向函数语句:指针名=函数名;87第87页第87页5.6指向组员函数指针intmax(inta,intb){returna>b?a:b;}voidmain(){ int(*p)(int,int); p=max; (*p)(1,2);}88第88页第88页intA::max(inta,intb){returna>b?a:b;}定义一个指向类A组员函数指针定义形式:类型(类名::*指针名)(参数类型);int(A::*p)(int,int);函数指针指向类组员函数语句:指针名=类名::函数名p=A::max;通过p调用max语句(对象.*函数指针)(参数)89第89页第89页例题90第90页第90页5.7求解一元二次方程利用C++实现设计类,定义类,定义main函数定义对象,利用对象调用组员函数执行91第91页第91页设计类类对象中应能存储相关数据:-数据组员a,b,c一元二次方程三个系数x1,x2存储求得方程解delta存储b*b-4*a*c类对象应能完毕计算功效:-组员函数1)为数据组员赋值函数2)计算x1,x2函数3)显示结果函数92第92页第92页定义类93第93页第93页设计类定义类组员函数94第94页第94页main函数95第95页第95页main函数96第96页第96页main函数97第97页第97页main函数98第98页第98页main函数99第99页第99页第五章复习结构函数定义:classA{intapublic:
A(intx):a(x){}A(intx){a=x;}}const限定数据组员初始化必须用?形式?尚有什么数据组员必须用此种形式初始化??const限定数据组员和引用数据组员初始化必须使用初始化列表形式。100第100页第100页静态组员不依赖于对象而存在。静态数据组员:定义时加static静态数据组员必须初始化使用语句:intA::b=0;静态对象:static对象一旦定义存在于内存中,直到程序结束才释放内存。101第101页第101页静态组员不依赖于对象而存在。静态组员使用注意:非静态对象静态组员可否使用?静态对象静态组员可否使用?静态对象非静态组员可否使用?静态组员函数非静态组员可否使用?非静态组员函数静态组员可否使用?通过类如何使用静态公有组员?102第102页第102页静态组员不依赖于对象而存在。其它注意事项:p1081-7静态函数没有this指针不能申明为virtual函数103第103页第103页友元普通函数作友元类组员函数作友元类作友元类A友元(函数,组员函数,类)能够访问类A中所有组员,但必须通过对象引用指针来访问。友元应在类A中利用friend申明104第104页第104页const对象const数据组员const组员函数const指针const变量const引用加const限定后不可改变,任何企图改变都造成错误,并应注意他们初始化!!105第105页第105页使用规则:const对象不能调用任何非const组员函数const组员函数只能调用const组员函数非const对象能够调用const组员函数非const对象能够使用const数据组员const组员函数中不能使用任何试图改变变量值语句。const数据组员必须在结构函数初始化列表中进行初始化106第106页第106页数组和类类能够定义对象数组对象数组中每个元素都是对象,其使用方式和对象使用方式相同。对象数组初始化形式:
类名数组名={类名(参数).....};对象数组名表示数组首地址能够定义指向对象指针p使其指向某个对象能够用指针p指向数组中元素107第107页第107页定义指针数组int*p[5];表示该数组中5个元素均为指针。函数指针定义形式:int(*p)(int,int);int(A::*P)(int,int);intmax(inta,intb){}intA::max(inta,intb){}108第108页第108页习题五-1109第109页第109页习题五-1110第110页第110页习题五-1111第111页第111页习题五-1112第112页第112页习题五-1113第113页第113页习题五-4114第114页第114页习题五-4115第115页第115页真题16.一个const对象只能访问
组员函数。16.设类Test中存在组员staticintx,则下列哪种初始化方式是正确()A.Test::intx=25; B.intx=25;C.intTest::x=25; D.intTestx=25;17.下列关于友元描述错误是()A.组员函数不可作友元 B.类能够作友元C.普通函数能够作友元 D.静态函数能够作友元35.简朴组员函数是指申明中不含const、______和static关键字函数。116第116页第116页真题17.类A中存在静态数据组员x,设a和b是类A两个对象,在执行a.x=10之后,b.x值为(
)A.未初始化
B.等于a.xC.等于0
D.随机
32.友元函数能够存取类_______、公有组员和保护组员。117第117页第117页真题33.若类组员函数用关键字static进行修饰,这样组员函数称为_______。
39.在C++中,即使友元提供了类之间数据进行访问一个方式,但它破坏了面向对象程序设计_______特性。18.关于类静态组员函数描述错误是()A.在创建对象前不存在B.不能阐明为虚函数C.不能直接访问非静态函数D.不是对象组员118第118页第118页真题l9.假如类A被申明成类B友元,则()A.类A组员即类B组员B.类B组员即类A组员C.类A组员函数不得访问类B组员D.类B不一定是类A友元34.类简朴组员函数是指申明中不含______、volatile、static关键字函数。119第119页第119页真题18.下列描述错误是()A.在创建对象前,静态组员不存在 B.静态组员是类组员C.静态组员不能是虚函数 D.静态组员函数不能直接访问非静态组员19.对于友元描述正确是()A.友元是本类组员函数 B.友元不是本类组员函数C.友元不是函数 D.友元不能访问本类私有组员120第120页第120页真题30.设类A有组员函数voidFun(void);若要定义一个指向类组员函数指针变量pafn来指向Fun,该指针变量申明语句是:________。121第121页第121页真题42.改错#include<iostream.h>classA{private:intx,y;public:A(inta=0,b=1);voidShow();};A::A(inta,intb){x=a;y=b;}voidA::Show(){cout<<″x=″<<x<<endl;cout<<″y=″<<y<<endl;}122第122页第122页真题43改错.#include<iostream.h>classA{unsignedcharvar;public:A(unsignedcharx){var=x:}voidprint(){cout<<″var=″<<var;}};voidmain(){Aa(″x″);a.print();}123第123页第123页真题43改错#include
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- Mumeose-K-生命科学试剂-MCE-2774
- 5-Fluoro-THJ-生命科学试剂-MCE-6389
- 2025年度环保型空调拆卸作业安全协议书
- 2025年度文化创意产业居间代理协议
- 二零二五年度父母出资购房子女房产份额分配协议
- 2025年度无房产证房屋买卖风险评估合同
- 二零二五年度砍树承包合同及林业资源管理实施协议
- 二零二五年度企业食堂档口租赁合同与员工餐饮补贴协议
- 高标准实验环境下的安全防护措施探讨
- 临时用电安全合同协议
- 设计单位-质量管理体系
- 2024版《供电营业规则》学习考试题库500题(含答案)
- 福建省医院大全
- GB/T 16659-2024煤中汞的测定方法
- 闪蒸罐计算完整版本
- (高清版)DZT 0073-2016 电阻率剖面法技术规程
- 完整2024年开工第一课课件
- 货运车辆驾驶员安全培训内容资料完整
- 高一学期述职报告
- 风神汽车4S店安全生产培训课件
- ICU患者的体位转换与床旁运动训练
评论
0/150
提交评论