您好,欢迎访问三七文档
一、简述1.类与对象的关系答:对象是类的实例,类是对象的抽象。2.面向对象程序设计的主要特征答:抽象性、封装性、继承性、多态性。3.为什么函数重载和运算符重载属于静态多态性答:因为函数重载和运算符重载在编译的时候就确定了它对应的类。4.派生类的成员函数在什么情况下采用覆盖答:如果派生类的函数与基类函数在函数名,参数类型和个数都相同时,则派生类的成员函数就会覆盖基类的成员函数。5.什么是多态性答:多态性是指具有不同功能的函数可以用同一个函数名,用一个函数名可以调用不同内容的函数。6.友元函数的作用答:声明函数为一个类的友元函数,则该友元函数可以访问这个类的私有成员。7.复制构造函数需要用户自己设计吗?在什么情况下要调用复制构造函数答:不需要自己设计,当通过复制一个对象而建立一个新的对象的时候系统会自动调用复制构造函数,把每个数据成员对应的复制过去。8.基类与派生类对象之间的赋值兼容关系,具体表现在哪些方面答:(1)派生类对象可以向基类对象赋值;(2)派生类对象可以代替基类对象向基类对象的引用进行赋值或者初始化。(3)如果函数的参数是基类对象或基类对象的引用,相应的实参可以用子类对象。(4)指向基类对象的指针也可以指向派生类对象。9.c++提供虚函数是要解决什么问题答:在类的继承中,不同层次中有可能有同名函数,但其功能不同。调用的时候要声明其作用域,比较麻烦。虚函数就是允许在派生类中重新定义与基类同名的函数并且可以通过基类指针或引用来访问基类和派生类中的同名函数。10.c++提供虚基类解决什么问题答:当一个派生类有多个直接基类,而这些基类又有一个共同的基类时,最终的派生类中会保留该间接共同基类的多份同名成员,不仅占用了大量储存空间,还增加了访问这些成员时的困难,容易出错。虚基类就使得在继承间接共同基类时只保留一份成员。二、判断题1.声明为公有的数据成员可以被派生类和外部程序访问。2.构造函数的调用顺序和析构函数的调用顺序相同。×3.派生类的数据成员所占的内存空间为基类的保护和公有数据成员和派生类数据成员所占的内存空间之和。4.在创建对象时,系统自动地隐式调用析构函数撤销对象所占得内存空间。×5.继承能传递。6.重载是面向对象程序设计多态性的一种形式。7.父类公有数据成员被派生类继承后,派生类的成员函数可见该公有数据成员。8.静态数据成员必须在类外初始化,而且能被所有成员函数访问。×9.类存在嵌套时,构造函数的构造顺序是:先内层类,后外层类。10.虚函数采用动态联编。11.在C++中这样来声明一个类:classcla{private:intx;cla();public:cla(inta);~cla();};构造函数可以作为私有成员。12.在C++中这样来声明一个类:classcla{private:intx=10;public:cla();cla(inta);~cla();};×类是抽象的,无实值。三、单项选择1、下面有关类与对象的说法中不正确的是(C)对象是类的实例B)任何一个对象只能属于一个具体的类一个类只能有一个对象D)类与对象得关系和数据类型与变量得关系类似;→2.下列关于虚函数的描述中,正确的是(A)重定义函数使用virtual,则该重定义函数仍然是虚函数;√当一个成员函数被声明为虚函数后,其派生类中的同名函数都自动成为虚函数。B)虚函数不得声明为静态函数虚函数是非静态的、非内联的成员函数,而不能是友元函数,但虚函数可以在另一个类中被声明为友元函数。一个虚函数无论被公有继承多少次,它仍然保持其虚函数的特性派生类中必须重新定义基类的虚函数;×有修改必要,将其声明为虚函数D)虚函数不得声明为另一个类的友元函数3、下面关于成员函数描述中,错误的是(A)→A)成员函数一定是内联函数可以设置为内联,也可以不设置。B)成员函数可以重载成员函数参数可以设定默认值D)成员函数可以是静态的4、下面关于派生类描述中,错误的是(D)A)一个派生类可以作为另一个派生类的基类B)派生类至少有一个基类C)派生类的成员除了它自己的成员外,还包含它的基类成员D)派生类中继承的基类成员的访问权限在派生类中保持不变派生方式:Privateprotectedpublic5、下面描述中,正确的是(A)A)virtual可以用来声明虚函数B)含有纯虚函数的类是不能创建对象的,因为它是虚基类←C)即使基类的构造函数没有参数,派生类也必须建立构造函数D)静态数据成员可以在定义时初始化只能在类外初始化静态成员函数没有this指针,6、对于const成员函数下面描述中,正确的是(C)A)const成员函数只能修改const数据成员B)const成员函数只能修改一般数据成员C)const成员函数不能修改任何数据成员D)const成员函数只能通过const对象调用只有普通成员函数能对普通数据成员修改和改变值。7、下列虚基类的声明中,正确的是(D)A)classvirtualB:publicAB)virtualclassB:publicAC)classB:publicAvirtualD)classB:virtualpublicA8、下面描述中,正确的是(D)A)当通过引用传递参数时,函数创建一个变量以存储参数的值B)当通过引用传递参数时,函数无法访问参数的值C)当通过引用传递参数时,调用程序创建一个临时变量以容纳参数的值D)当通过引用传递参数时,函数访问调用程序中参数的原始值9、关于静态数据成员,下列描述正确的是(D)A)静态数据成员可以在类体内进行初始化B)静态数据成员不可以通过类的对象调用C)静态数据成员不能接受private控制符作用E)静态数据成员可以直接通过类名/对象名调用,只能在类外初始化.10、对于const数据成员下面描述中,错误的是(C)A)const数据成员必须初始化,并且不能更新B)const数据成员称为常数据成员C)可以在类体外定义const数据成员D)const数据成员的初始化只能通过构造函数的初始化列表进行11、编写c++程序一般需要哪些步骤(B)A编辑、调试、连接、运行B编辑、编译(翻译为机器可识别的语言)、连接、运行C编译、调试、编辑、连接D编辑、调试、编译、运行12、决定C++语言中函数的返回值类型的是(D)Areturn语句中表达式的类型B调用该函数时系统随机产生的类型C调用该函数时的主调函数的类型D在定义该函数时所指定的数据类型13、下面叙述不正确的是(D)A派生类一般都用公用派生B对基类成员的访问必须是无二义性的C复制兼容规则也适用于多重继承的组合D基类的公用成员在派生类中仍然是公用的×14、据封装就是将一组数据和与这组数据有关的操作组装在一起而形成的实体,称为(A)A类B对象C函数D数据库15、在公用派生类的成员函数不能直接访问基类中继承来的某个成员,则该成员一定是基类中的(A)A私有成员B公用成员C保护成员D私有成员或保护成员16、对基类和派生类的关系描述中,错误的是(B)A派生类是基类的具体化B基类继承了派生类的属性C派生类是基类定义的延续D基类是派生类的抽象→17、关于this指针使用说法正确的是(A)A保证每个对象成员函数能够处理各自的数据B保证基类的私有成员在子类中可以被访问C保证基类的保护成员在子类中可以被访问D保证基类的公用成员在子类中可以被访问18、所谓多态性是指(B)A不同的对象调用不同名称的函数B不同的对象调用相同名称的函数C一个对象调用不同名称的函数D一个对象调用不同名称的对象→19、一个函数功能不太复杂,但频繁被调用,则应把它定义为(C)A重载函数B递归函数C内联/置/嵌函数inlineD嵌套函数20、地址作为实参传递给形参,下面说法正确的是(D)A实参是形参的备份B实参与形参无关C形参是实参的备份D实参与形参是同一对象22、C++设置虚基类的目的是(C)A提高运行效率B实现代码重用C消除二义性D简化程序23、指出下列各类函数中,不是类的成员函数(C)A构造函数B析构函数C友元函数:可以是非成员函数或另一类的成员函数D拷贝构造函数24、在公用继承的情况下,基类的成员(私有的除外)在派生类中的访问权限(B)A受限制B保持不变C受保护D不受保护25、关于友元非成员函数的继承性错误的描述是(D)A友元函数可以直接访问该类的私有成员B友元类中的所有成员函数都是这个类的友元函数C通过友元可以提高程序的运行效率,但却破坏了封装性D派生类可以被继承基类中的友元关系26、C++设置虚函数的目的是(D)A实现代码重用B实现静态联编C消除二义性→虚基类D实现动态联编27、假定要对类AB定义+运算符重载成员函数,实现两个AB类对象的加法,并返回AB对象,则该成员函数的声明语句为(C)AABoperator+(AB&a,AB&b);BAB&operator+(ABa);CABoperator+(AB&a);eg:Complexoperrator+(Complex&c2)DAB*operator+(ABb);28、在类定义的外部,可以访问的成员是(C)A所有类成员Bprivate的类成员Cpublic的类成员Dprivate或public的类成员29、在C++中,类与类之间的继承关系具有(A)A传递性B自反性C对称性D反对成性30、关于构造函数的描述中,错误的是(D)A没有返回值B其名与类名完全相同C在创建对象时系统自动调用它D在没有定义构造函数的情况下,系统不会调用它31、通常拷贝构造函数的参数是(B)A对象名B对象的引用名C对象的成员名D对象的指针名32、下面的描述中,正确的是(D)A所有运算符都可以重载不可以重载的运算符eg:成员访问运算符.成员指针访问运算符.*域运算符::长度sizeof条件?:B基类类型的指针可以指向子类,子类类型的指针也可以指向其基类C可以在构造函数中对静态数据成员初始化D动态联编要满足两个条件:被调用的成员函数是虚函数;用指针或引用调用虚函数。四、读程序,写出运行结果1#includeiostreamusingnamespacestd;classA{private:inta,b,c;public:A(){a=b=c=0;cout”constructingA()”endl;}A(intx,inty,intz){a=x;b=y;c=z;cout”constructingA(int,int,int)”endl;}~A(){cout”destructingclassA”endl;if(a==b&&b==c)couta=b=cendl;elsecouta!=b!=cendl;}voiddisp()const{couta=a,b=b,c=cendl;}};intmain(){Aa1;Aa2(3,6,9);a1.disp();a2.disp();return0;}执行结果:constructingA()constructingA(int,int,int)a=0,b=0,c=0a=3,b=6,c=9destructingclassAa!=b!=cdestructingclassAa=b=c2#includeiostreamusingnamespacestd;classB{private:intx,y;public:B(){x=y=0;cout”constructingB()”endl;}B(inti,intj){x=i;y=j;cout”constructingB(int,int)”endl;}voidcopy(B&s);voidsetxy(inti,intj){x=i;y=j;}voidprint(){cout”x=”x”,y=”yendl;}};voidB::copy(B&s){x=s.x;y=s.y;}voidfunc(Bs1,B&s2){s1.setxy(3,4);s2.setxy(5,6);}//不改变原始值改变原始值intmain(){Bp(7,8),q;q.copy(p);func
本文标题:学生c++复习题
链接地址:https://www.777doc.com/doc-2489436 .html