总结基础知识习题课

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

C++复习基础习题课1、每个类()构造函数A.只能有一个B.只可有公有的C.可以有多个D.只可有缺省的答案为C2、已知类A中的一个成员函数的说明如下:voidSet(A&a);则该函数的参数“A&a”的含义是()A.指向A的指针为aB.将变量a的地址赋给类AC.类A对象引用a用作函数的形参D.变量A与a按位与后作函数参数答案为C3、下列特性中,C与C++共有的是()A.继承B.封装C.多态性D.函数定义不能嵌套答案为D4、假定AB为一个类,则执行ABx;语句时将自动调用该类的()A.有参构造函数B.无参构造函数C.拷贝构造函数D.赋值构造函数答案为B5、如果类A被说明成类B的友元,则()A.类A的成员即类B的成员B.类B的成员即类A的成员C.类A的成员函数不得访问类B的成员D.类B不一定是类A的友元答案为D6、下列不是类的成员函数的是()A.构造函数B.析构函数C.友元函数D.拷贝构造函数答案为C7、拷贝(复制)构造函数的作用是()A.进行数据类型的转换B.用对象调用成员函数C.用对象初始化对象D.用一般类型的数据初始化对象答案为C8.若要把函数voidf()定义为类aClass的友元函数,则应该在类aClass的定义中加入的语句是()A.voidf();B.staticvoidf();C.friendf();D.friendvoidf();答案为D9.下列关于析构函数的描述中,错误的是()A.类中有且仅有一个析构函数B.析构函数可以有形参C.析构函数没有函数类型D.析构函数在对象消失时被自动执行答案为B10.下面对静态数据成员的描述中,正确的是()A.静态数据成员可以在类体内进行初始化B.静态数据成员不可以被类的对象调用C.静态数据成员不能受private控制符的作用D.静态数据成员可以直接用类名调用答案为D11.下面关于友元函数的描述中,正确的是()A.友元函数的实现必须在类的内部定义B.友元函数是类的成员函数C.友元函数破坏了类的封装性和隐藏性D.友元函数不能访问类的私有成员答案为C12.下列关于new运算符的描述中,错误的是()A.使用运算符new创建对象组时必须定义初始值B.使用运算符new创建对象时,会调用类的构造函数C.运算符new可以用来动态创建对象和对象数组D.使用new运算符创建的对象可以运用运算符delete删除答案为A13.下列对类的构造函数和析构函数的描述中,正确的是()A.构造函数可以重载,析构函数不能B.构造函数不能重载,析构函数可以C.构造函数可以重载,析构函数也可以重载D.构造函数不能重载,析构函数也不能重载答案为A14.在C++中,数据封装要解决的问题是()A.数据的规范化B.便于数据转换C.避免数据丢失D.防止不同模块之间数据的非法访问答案为D15.假定MyClass为一个类,那么下列的函数说明中,()为该类的析构函数.A.void~MyClass();B.~MyClass(intn);C.MyClass();D.~MyClass();答案为D16.为了使类中的成员不能被类的对象通过成员操作符访问,则不能把该成员的访问权限定义为()A.publicB.protectedC.privateD.static答案为A17.下列对与拷贝初始化构造函数的描述中,正确的()A.在C++语言中,如果不自定义类的拷贝初始化构造函数,则每个类都有默认的拷贝初始化构造函数B.必须为每个类定义拷贝初始化构造函数C.如果要使用拷贝初始化构造函数,则必须在类中定义D.当定义了类的构造函数时,如果要使用拷贝初始化构造函数,则必须定义拷贝初始化构造函数答案为A18.对于下面定义的类MyClass,在函数f()中将对象成员n的值修改为50的语句(划线处)应该是()classMyClass{public:MyClass(intx){n=x;}voidSetValue(intn1){n=n1;}private:intn;};intf(){MyClass*ptr=newMyClass(45);__________;}A.MyClass(50)B.SetValue(50)C.ptr-SetValue(50)D.ptr-n=50答案为C19.类MyClass的定义如下:classMyClass{public:MyClass(){value=0;}setVariable(inti){value=i;}private:intvalue;};则以下各项对如下语句序列的描述中,正确的是().MyClass*p,my;p=&my;A.语句”p=&my;”是把对象my赋值给指针变量pB.语句”MyClass*p,my;”会调用两次类MyClass的构造函数C.对语句”*p.SetVariable(5)”的调用是正确的D.语句”p-SetVariable(5)”与语句”my.SetVariable(5)”等价答案为D20.下面类的定义,有()错误.classMyClass{inti=0;public:voidMyClass();~MyClass(intValue);};A.1B.2C.3D.4答案为C21.定义析构函数时,应该注意()A.其名与类名完全相同B.返回类型是void类型C.无形参,也不可重载D.函数体中必须有delete语句答案为C22.构造函数不具备的特征的是()A.构造函数的函数名与类名相同B.构造函数可以重载C.构造函数可以设置默认参数D.构造函数必须指定返回类型答案为D23.类的析构函数是在什么时间被自动调用的()A.类创建时B.创建对象时C.删除对象时D.不自动调用答案为C24.对于任何一个类,析构函数最多有()个A.0B.1C.2D.325.通常,拷贝构造函数的参数是()A.某个对象名B.某个对象的成员名C.某个对象的引用名D.某个对象的指针名答案为B答案为C26.面向对象程序设计中的数据隐藏指的是()A.输入数据必须输入保密口令B.数据经过加密处理C.对象内部数据结构上建有防火墙D.对象内部数据结构的不可访问性答案为D27.下列关于类的访问权限的描述中,错误的是().A.说明为公有的成员可以被程序中的任何代码访问B.说明为私有的成员只能被类的成员和说明为友元类的成员函数访问C.说明为保护的成员,除了能被本身的成员函数和说明为友元类的成员函数访问外,该类的派生类的成员也可以访问D.类的所有成员都可以被程序中的任何代码访问答案为D28.一个类的友元函数或友元类可以访问该类的()A.私有成员B.保护成员C.公有成员D.所有成员答案为D29.下列关于成员函数特征的描述中,错误的是()A.成员函数一定是内联函数B.成员函数可以重载C.成员函数可以设置参数的默认值D.成员函数可以是静态的答案为A30.下面对类中静态数据成员的描述中,正确的是()A.静态数据成员是类的所有对象共享的数据B.类的每个对象都有自己的静态数据成员C.类的不同对象有不同的静态数据成员D.静态数据成员不能通过类的对象调用答案为A31.下列虚基类的声明中,正确的是()。A.classvirtualB:publicAB.virtualclassB:publicAC.classB:publicAvirtualD.classB:virtualpublicA答案为D32.C++类体系中,不能被派生类继承的有()。A.构造函数B.虚函数C.静态成员函数D.赋值操作函数33.下列说法错误的是()。A.公有继承的基类中的public成员在派生类中仍是public的B.公有继承的基类中的private成员在派生类中仍是private的C.私有继承的基类中的public成员在派生类中变成private的D.保护继承的基类中的public成员在派生类中变成protected的答案为A答案为B34.下列对基类和派生类关系的描述中,错误的是()。A.派生类是基类的具体化B.派生类是基类的子集C.派生类是基类定义的延续D.派生类是基类的组合答案为B35.C++中的类有两种用法:一种是类的实例化,即生成类对象,并参与系统的运行;另一种是通过()派生了新的类。A.复用B.继承C.封装D.引用答案为B36.C++类体系中,能被派生类继承的是()。A.构造函数B.虚函数C.析构函数D.友元函数答案为B37.在重载一个运算符函数时,其参数表中没有任何参数,这说明该运算符是()。A.一元非成员运算符B.一元成员运算符C.二元非成员运算符D.二元成员运算符答案为B38.关于多继承二义性的描述,()是错误的。A.派生类的多个基类中存在同名成员时,派生类对这个成员访问可能出现二义性B.一个派生类是从具有共同的间接基类的两个基类派生来的,派生类对该公共基类的访问可能出现二义性C.解决二义性最常用的方法是作用域运算符对成员进行限定D.派生类和它的基类中出现同名函数时,将可能出现二义性答案为D39.下列对派生类的描述中,()是错误的。A.一个派生类可以作为另一个派生类的基类B.派生类至少有一个基类C.派生类的成员除了它自己的成员外,还包含了它的基类成员D.派生类中继承的基类成员的访问权限到派生类保持不变答案为D40.若类A和类B的定义如下:classA{inti,j;public:intgeti(){returni;}};classB:publicA{intk;public:voidmake(){k=i*j;}};则上述中,()是非法的表达式。A.k=i*jB.intk;C.returni;D.voidmake();答案为A41.关于公有继承,下列说法错误的是()。A.基类的公有成员和保护成员被继承后作为派生类的公有成员和保护成员。B.派生类的其他成员可以直接访问基类的公有成员和保护成员。C.派生类的对象可以访问基类的私有成员。D.派生类成员和对象都无法访问基类的私有成员。答案为C42.下列说法中错误的是()。A.公有继承时基类中的public成员在派生类中仍是public的;B.公有继承时基类中的private成员在派生类中仍是private的;C.私有继承时基类中的public成员在派生类中是private的;D.保护继承时基类中的public成员在派生类中是protected的;答案为B43.在公有继承中,基类中的公有成员作为派生类的()。A.公有成员B.私有成员C.保护成员D.私有成员函数答案为A44.基类中的()不允许外界访问,但允许派生类的成员访问,这样既有一定的隐藏能力,又提供了开放的接口。A.公有成员B.私有成员C.保护成员D.私有成员函数答案为C45.设置虚继承的声明中,正确的是()。A.简化程序B.消除二义性C.提高运行效率D.减少目标代码答案为B46.下面叙述错误的是()。A.基类的protected成员在派生类中仍然是protectedB.基类的protected成员在public派生类中仍然是protected的C.基类的protected成员在private派生类中是private的D.基类的protected成员不能被派生类的对象访问答案为A47.派生类的对象对它的基类成员中()是可以访问的。A.公有继承的公有成员B.公有继承的私有成员C.公有继承的保护成员D.私有继承的公有成员答案为A48.下列对派生类的描述中,错误的是()。A.一个派生类可以作为另一个派生类的基类B.派生类至少有一个基类C.派生类的缺省继承方式是privateD.派生类只含有基类的公有成员和保护成员答案为D49.继承具有(),即当基类本身也是某一个类派生类时,底层的派生类也会自

1 / 56
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功