- 99.00 KB
- 2022-07-30 发布
- 1、本文档由用户上传,淘文库整理发布,可阅读全部内容。
- 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,请立即联系网站客服。
- 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细阅读内容确认后进行付费下载。
- 网站客服QQ:403074932
搞懂以下重要概念:是什么,有什么用,怎么用1.类与对象2.类的数据成员,默认为私有;在类定义的外部,可以被访问的成员是公有成员。3.构造函数(没有返回值)与析构函数4.this指针P221:是一个常指针。每个成员函数拥有一个隐含的this指针。当一个成员函数被调用时,该成员函数的this指针指向调用它的对象。this指针可在成员函数中显式使用。静态成员函数没有this指针(因为静态函数只能访问类的静态数据成员)P239。5.复制构造函数(拷贝构造函数):构造函数的参数为自身类类型的引用。其类A复制构造函数的原型说明为:A(A&x);见课本P2266.常成员函数(在函数头以const作后缀):不能修改对象的成员值。P2377.静态成员:类似于全局变量,只是其作用域是类;其值与具体的对象无关。P2378.友元关系P241:非对称、非传递。一个类中的成员函数可以是另一个类的友元9.P252习题6.2第3、4小题;习题6.3第2小题;习题6.4之第3小题10.运算符的重载:可以对运算符做出新的解释,但其原有的基本语义不变。P258。注意哪些运算符可以被重载,哪些不能被重载。看懂P261例题7-2和P246例题7-3的程序及执行结果。11.继承:各种继承方式对应基类数据成员在派生类中的访问权限,P288。注意访问声明格式P29312.派生类的构造函数使用冒号语法实现参数初始化,语法格式见P30013.P300继承关系的构造函数执行顺序:基类构造函数->类对象成员构造函数->派生类构造函数14.多继承P308:一个类有多个直接基类15.虚基类P314:在多继承中,为避免包含基类的多个副本的继承方式。虚继承P316:与基类本身无关,取决于派生类的继承方式16.动态联编:用同一基类指针访问(调用)虚函数,称为运行时的多态。P330-333。17.纯虚函数(在基类中说明的虚函数,没有实现定义,赋值为0)。见P338的说明。18.抽象类(至少有一个纯虚函数,不能实例化的类)。注意P339抽象类正确的声明格式。19.类模板:由模板说明和类说明构成;类属参数必须至少在类说明中出现一次。见P361\n的说明1.模板类:类模板实例化,成模板类。见课本P3632.函数模板,做课本P386习题10.2两小题3.标准流P391:cin,cout等。读懂程序中出现的(常见的)格式控制:设置输出的宽度、左/右对齐、设置填充符号、默认的对齐方式及默认的填充符号4.读/写文件的打开方式:P406考试样题(仅供参考)填空题Ø设p是指向一个类的动态对象的指针变量,则执行deletep;语句时,将自动调用该类的析构函数。Ø在运行时才能确定的函数调用称为动态联编。Ø在C++类中,有一种不能实例化的类,这样的类只能作为基类,称之为_抽象类______,定义该类至少具有一个___纯虚函数___。Ø如果一个类包含一个或多个纯虚函数,则该类为抽象类。Ø假定A为一个类,则语句A(A&x);为该类拷贝构造函数的原型说明。Ø有2个重载函数,它们的函数原型形式参数的个数或者对应形式参数位置的类型不同。Ø重载函数是静态绑定或动态绑定?静态绑定。ØC++语言面向对象程序设计有三大基本特性,其中二个是继承、多态性(或数据封装)。Ø基类的私有成员不能被继承、保护成员能被继承、公有成员能被继承。是非题Ø类模板就是模板类。(N)Ø要实现动态联编,必须使用基类指针调用虚函数。(Y)Ø在多继承中,为了避免包含基类的多个副本,可以采用虚基类。(Y)Ø构造函数可以是虚函数。(N)Ø函数重载是动态绑定。(N)Ø要实现动态联编,必须使用基类指针调用虚函数。(Y)Øcin是ostream类的对象。(N)Ø友员函数通过this指针访问对象成员。(N)Ø构造函数的名字与类的名字相同。(Y)Ø类的protected成员是不能被继承的。(N)Ø运算符重载后其原有的基本语义不变。(Y)选择题Ø假设baseClass为抽象类,则下列(C)声明是正确的。A.baseClassfun(int);B.intfun(baseClass);C.baseClass*bp;D.baseClassobjØ下面函数原型声明中,(B)声明了fun为纯虚函数。\nA.voidfun()=0;B.virtualvoidfur()=0;C.virtualvoidfun();D.virtualvoidfun(){};Ø有如下的类定义:classXA{intx;public:XA(intn){x=n;}};classXB:publicXA{inty;public:XB(inta,intb);};在构造函数XB的下列定义中,正确的是(B)A.XB::XB(inta,intb):x(a),y(b){}B.XB::XB(inta,intb):XA(a),y(b){}C.XB::XB(inta,intb):x(a),XB(b){}D.XB::XB(inta,intb):XA(a),XB(b){}Ø下面运算符中,不能被重载的运算符是(C)A)<=B)-C)?:D)[]Ø7、填空选择#includeclassBase{public:voidshow(){cout<<”Base::show”<show()Ø下列虚基类的声明中,正确的是(D)。A).classvirtualD:publicBB).virtualclassD:publicBC)classD:publicBvirtualD)classD:virtualpublicBØ下面对友元的错误描述是(D).A)关键字friend用于声明友元B)一个类中的成员函数可以是另一个类的友元。C)友元函数访问对象的成员不受访问特性的影响D)友元函数通过this指针访问对象成员Ø派生类的对象对它的基类成员中(A)是不可以直接访问的。A)公有继承的私有成员B)公有继承的保护成员C).公有继承的公有成员D)私有继承的公有成员Ø在创建派生类对象时,构造函数的执行顺序是(A)A)基类构造函数、对象成员构造函数、派生类本身的构造函数B)对象成员构造函数、基类构造函数、派生类本身的构造函数C)基类构造函数、派生类本身的构造函数、对象成员构造函数D)派生类本身的构造函数、基类构造函数、对象成员构造函数Ø下面函数原型声明中,(D)声明了fun为纯虚函数。A)voidfun()=0;B)virtualvoidfun(){};C)virtualvoidfun();D)virtualvoidfun()=0;Ø下列流类中可以用于处理文件的是(d)。(a)ios(b)iostream(c)strstream(d)fstream\nØ下列选项中,用于清除基数格式位设置以十六进制输出的语句是(b)。(a)cout<>setf(ios::hex,ios::basefield);Ø在C++中,要实现动态联编,必须使用(d)调用虚函数。(a)类名(b)派生类指针(c)对象名(d)基类指针Ø下列函数中,不能说明为虚函数的是(c)。(a)私有成员函数(b)公有成员函数(c)构造函数(d)析构函数阅读程序,写出下列程序的运行结果Ø#include#includeclasspoint{public:point(floatx,floaty){a=x;b=y;cout<<"点("<classBASE1{public:BASE1(inti){cout<<"调用基类BASE1的构造函数:"<classA{public:virtualvoidf(){cout<<"A::f()\n";}};classB:publicA{public:voidf(){cout<<"B::f()\n";}};classC:publicA{public:voidf(){cout<<"C::f()\n";}};voidmain(){Aa,*p;Bb;Cc;p=&a;p->f();p=&b;p->f();p=&c;p->f();}执行结果:A∷f()B∷f()C∷f()Ø#include#includeintmain(){doublevalues[]={1.23,15.16,653.7,5358.28};cout<classT{public:T(intx){a=x;b+=x;}staticvoiddisplay(Tc){cout<<”a=”<\nclassCount{staticintcount;public:Count(){count++;}staticintGetc(){returncount;}~Count(){count--;}};intCount::count=100;intmain(void){Countc1,c2;cout<classCount{staticintcount;public:Count(){count++;}staticintGetc(){returncount;}~Count(){count--;}};intCount::count=100;intmain(void){Countc1,c2;cout<classPlane{protected:intx,y;public:Plane(inta,intb){x=a;y=b;}virtualvoidprint(){cout<<'('<print();ptr=&d2;ptr->print();ptr->increase(4);ptr->print();d2.print();}<3,6><2,7,9><6,11,13><6,11,13>去掉上题程序中的“virtual”关键字,运行结果如何?<3,6><2,7><6,11><6,11,13>程序题Ø编写一程序,定义一个合子类BOX,它能提供计算合子的体积和表面积。classBOX{public:BOX(doublel,doublew,doubleh){length=l;width=w;height=h;}doublebulk(){return(length*width*height);}doublesufasearea(){return(2*(length*width+length*height+width*height));}private:doublelength,width,height;};voidmain(){BOXa(10,20,30);cout<<"a盒子的体积:"<classComplex{private:floatreal,imag;public:Complex(floatr=0,floati=0){real=r;imag=i;}voidDisplay(){cout<0)cout<<"+"<classRectangle{public:floatlength,width;floatarea(){returnlength*width;}};classRectangular:publicRectangle{public:floatheight;floatcube(){returnarea()*height;}};intmain(){Rectanglea;Rectangularb;cin>>a.length<>b.length<