面向对象程序设计期末总复习题、单项选择题1. _________________________________ 下面关于对象概念的描述中, 是错误的。
(B )C.对象是一个状态和操作(或方法)的封装体D.对象之间的信息传递是通过消息进行的2. _____________________________ 继承机制的作用是: (C)5. __________________________________ 通常拷贝构造函数的参数是。
(C)6. ___________________________________________________________________ 如果在基类中将show 声明为不带返回值的纯虚函数,正确的写法是 ______________________________ 。
(C)C.virtual void show()=0 ; D.void show=0 virtual ;7. 下面关于友元的描述中,错误的是 __________ 。
(D)A. 友元函数可以访问该类的私有数据成员B. 一个类的友元类中的成员函数都是这个类的友元函数C. 友元可以提高程序的运行效率D. 类与类之间的友元关系可以继承 8. 在C++中, _________ 运算符不能重载。
(B)A. +B. ? :C.-D.<=9. 下列关于运算符重载的描述中, __________是正确的。
(D) A.运算符重载可以改变操作数的个数 B.运算符重载可以改变优先级C.运算符重载可以改变结合性D.运算符重载不可以改变语法结构10. 在下列函数原型中,可以作为类AA 构造函数的是 ___________ (D)A . void AA(int) ;B . int AA( ) ;C . AA(int)const;D . AA(int);11. 在声明类时,下面的说法正确的是 ___________ 。
(C)A. 可以在类的声明中给数据成员赋初值B. 数据成员的数据类型可以是 registerC. private , public , protected 可以按任意顺序出现D. 没有用private , public , protected 定义的数据成员是公有成员12. 继承具有 _______ ,即当基类本身也是某一个类的派生类时,底层的派生类也会自动继承间接基类的A.对象代表着正在创建的系统中的一个实体B.对象就是C 语言中的结构体变量A .信息隐藏B •数据封装C .定义新类D •数据抽象 A.析构函数有且只有一个B.析构函数无任何函数类型D.析构函数不能是虚函数4.友兀的作用之一是(A)A.提高程序的运行效率B.加强类的封装性C.析构函数没有形参D.增加成员函数的种类A.某个对象名B.某个对象的成员名C.某个对象的引用名D.某个对象的指针名 A. virtual show()=0B. virtual void show()3.有关析构函数的说法不正确的是 ____________ (D)C.实现数据的隐藏性成员。
(B)___________ 。
(A)16. _________________________________________ 下面关于C++语言变量的叙述错误的是 (B)A .在C++语言中变量分为 auto , static , extern 和register 四种存储类型B .自动变量和外部变量的作用域为整个程序C .内部变量的作用域是定义它的函数D .外部静态变量的作用域是定义它的文件17. 下列的各类函数中, _______ 不是类的成员函数。
(C)A. 构造函数B.析构函数C.友元函数18. 有如下类声明:Class Foo {ing bar ;}; 则Foo 类的成员bar 是 ___________ (C)23.声明一个类的对象时, 系统自动调用一个函数; 撤消对象时, 系统自动调用一个函数; 该函数为___CA.成员函数;构造函数B.复制构造函数;析构函数C.构造函数;析构函数D •析构函数;复制构造函数24.当一个派生类私有继承一个基类时,基类中的所有公有成员和保护成员成为派生类的__A _____B. proteCted 成员C.public 成员 D.友元25.在C++中,要实现动态联编,必须使用 _________ D___调用虚函数A. 类名B.派生类指针A. 规律性 13. 在 多 重 继 承 中 ,B. 传递性C.重复性D. 多样性公有派生和私有派生对于基类成员在派生类中的可访问性与单继承的规则A. 完全相同B. 完全不同C. 部分相同,部分不同D.以上都不对14. 对虚函数的调用 ___________ 。
(D)A. 一定使用动态联编 C. 一定使用静态联编15. 关于成员函数特征的下述描述中,A. 成员函数一定是内置函数B. 必须使用动态联编 D.不一定使用动态联编_______ 是错误的。
(A)B. 成员函数可以重载C. 成员函数可以设置参数的默认值D.成员函数可以是静态的D.拷贝构造函数A. 公有数据成员B. 公有成员函数C. 私有数据成员D. 私有成员函数19. 下列表示引用的方法中, ___________ A. float &t=&m; B.int &y=1020. 设置虚基类的目的是 _________ 。
(B)A. 简化程序B. 消除二义性21.对于类中定义的成员,其隐含访问权限为A.publiCB.private22.关于类和对象不正确的说法是 ________A. 类是一种类型,它封装了数据和操作 是正确的。
已知: int m=10; (D);C.int &z ;D. int &x=mC.提高运行效率D .减少目标代码_______ (B)C.staticD.protected(B)B. —个类的对象只有 个C.对象是类的实例A.private 成员 D. 一个对象必属于某个类C.对象名若一个类中含有纯虚函数,则该类称为 A. 抽象类C.派生类 下列关于 this 指针的叙述中,正确的是 A .任何与类相关的函数都有this 指针B .类的成员函数都有 this 指针C .类的友元函数都有 this 指针D .类的非静态成员函数才有 t his 指针 有如下类声明: class Book {int num() ;}; 则 Book 类的成员 num 是___ D _ A .公有数据成员 B .公有成员函数 下面有关重载函数的说法中正确的是 ___CA.重载函数必须具有不同的返回值类型; C)重载函数必须有不同的形参列表; 下面对友元函数描述正确的是 _________ ___C A.友元函数的实现必须在类的内部定义B.友元函数是类的成员函数C.友元函数破坏了类的封装性和隐藏性D.友元函数不能访问类的私有成员下面叙述不正确的是 ___A _A. 基类的保护成员在派生类中仍然是保护成员B. 基类的保护成员在公有派生类中仍然是保护成员C. 基类的保护成员在私有派生类中是私有成员D. 对基类成员的访问必须是无二义性下面对静态数据成员的描述中,正确的是 __________ ___DA. 静态数据成员可以在类体内进行初始化B. 静态数据成员不可以被类的对象调用C. 静态数据成员不能受 private 控制符的作用D. 静态数据成员可以直接用类名调用在C++类语言体系中,不能被派生类继承的有 ______ BA .转换函数B .构造函数C .虚函数D .静态成员函数26. 27. 28.29.30.31. 32. 33.34.35.36.D.基类指针___ A ___ B. 纯基类D. 基类___D ____ C .私有数据成员 D .私有成员函数B.重载函数形参个数必须不同; D.重载函数名可以不同;B .简化代码 D. 减少目标代码 ___B ____B. 调用成员函数实现D.函数重载实现 __C _____C. ::D./设置虚基类的目的是 ___A ____ A. 消除二义性C.提高运行效率在C++语言程序中, 对象之间的相互通信通过 A. 继承实现C. 封装实现下列运算符中,在 C++语言中不能重载的是 A.*B.>=37.在类的定义中,用于为对象分配内存空间,对类的数据成员进行初始化并执行其他内部管理操作的函38 •下列关于虚基类的描述中,错误的是_B _______A. 设置虚基类的目的是为了消除二义性; B. 虚基类的构造函数在非虚基类之后调用;C. 若同一层包含多个虚基类,这些基类的构造函数按照它们的次序调用;D. 若虚基类由非基类派生而来,则仍然先调用基类构造函数,再用派生类的构造函数39. _______________________________________________________________________________ 考虑函数原型 void test (int a,int b=7,char="*"),下面的函数调用中,属于不合法调用的是 ________________ C ____41.在重载一个运算符时,如果其参数表中有一个参数,则说明该运算符是 ()。
DA. —元成员运算符 B .二元成员运算符C .一元友元运算符D .选项B 和选项C 都可能42.在公有派生情况下,有关派生类对象和基类对象的关系,下列叙述不正确的是 ()°CA 派生类的对象可以赋给基类的对象B.派生类的对象可以初始化基类的引用C. 派生类的对象可以直接访问基类中的成员 D .派生类的对象的地址可以赋给指向基类的指针 43.下面关于虚函数的描述,错误的是()。
BA. 在成员函数声明的前面加上 virtual 修饰,就可把该函数声明为虚函数B. 基类中说明了虚函数后,派生类中对应的函数也必须说明为虚函数C. 虚函数可以是另一个类的友元函数,但不能是静态成员函数D. 基类中说明的纯虚函数在其任何派生类中都必须实现 44.定义派生类时,若不使用关键字显示地规定采用何种继承方式,则默认方式为 ()。
AA.私有继承 B .非私有继承 C .保护继承 D .公有继承 45. 有如下程序: #in clude using n amespace std ; class ONE{ int c ; public:ONE() : c (0) {cout<<1 ; } ONE( int n ) : c (n ) {cout<<2 ; } }; class TWO{数是 ____ C ___A.友元函数B.虚函数C.构造函数D.析构函数A. test (5)B.test (5,8)40. 下列关于构造函数的描述中,错误的是A.构造函数可以设置默认参数; C.test(6,"#") D.test(O,O."*");DB. 构造函数在定义类对象时自动执C.构造函数可以是内联函数;D.构造函数不可以重载ONE onel;ONE one2; public:TWO ( int m ): one2( m ) {cout<<3 ;} };int main () { TWO t4() return 0}运行时的输出结果是 ( ) 。