一、选择题(1)下面关于类和对象的描述中,错误的是A)类就是C语言中的结构体类型,对象就是C语言中的结构体变量B)类和对象之间的关系是抽象和具体的关系C)对象是类的实例,一个对象必须属于一个已知的类D)类是具有共同行为的若干对象的统一描述体(2)以下各选项组中,均是C++语言关键字的组是A) public operator this B)shod string staticC)it while >= D)private cout printf(3)在C++语言中,数据封装要解决的问题是A)数据的规范化B)便于数据转换C)避免数据丢失D)防止不同模块之间数据的非法访问(4)以下程序中,错误的行是①#include<iostream. h>②class A③{④ public:⑤ int n=2:⑥ A( int val){cout<<val<<endl;}⑦~A(){};⑧};⑨void main()⑩{⑩ A a(0);⑩}A)⑤ B)⑥ C)⑦ D)⑩(5)对类的构造函数和析构函数描述正确的是A)构造函数可以重载,析构函数不能重载B)构造函数不能重载,析构函数可以重载C)构造函数可以重载,析构函数也可以重载D)构造函数不能重载,析构函数也不能重载(6)下面程序的运行结果为#include(iostream. h>class A{int num;public:A(int i){num=i;}A(A &a){num=a. num++;}void print(){cout<<num;}};void main(){A a(1),b(a);a. print();b.print();A)11 B)12 C)21 D)22(7)下面对静态数据成员的描述中,正确的是A)静态数据成员是类的所有对象共享的数据B)类的每个对象都有自己的静态数据成员C)类的不同对象有不同的静态数据成员值D)静态数据成员不能通过类的对象调用(8)如果类A被说明成类B的友元,则A)类A的成员即类B的成员B)类B的成员即类A的成员C)类A的成员函数不得访问类B的成员D)类B不一定是类A的友元(9)可以用p.a的形式访问派生类对象P的基类成员a,其中a是A)私有继承的公有成员B)公有继承的私有成员C)公有继承的保护成员 D)公有继承的公有成员(10)建立派生类对象时,3种构造函数分别是a(基类的构造函数)、b(成员对象的构造函数)、c(派生类的构造函数)这3种构造函数的调用顺序为A)abc B)acb C)cab D)cba(11)下面关于虚函数的描述,错误的是A)在成员函数声明的前面加上virtual修饰,就可把该函数声明为虚函数B)基类中说明了虚函数后,派生类中对应的函数也必须说明为虚函数C)虚函数可以是另一个类的友元函数,但不能是静态成员函数D)基类中说明的纯虚函数在其任何派生类中都必须实现(12)下面关于模板的描述,错误的是A)函数模板和类模板的参数可以是任意的数据类型B)类模板不能直接使用,必须先实例化为相应的模板类.然后定义了模板类的对象后才能使用C)函数模板不能直接使用,需要实例化为模板函数后才能使用D)类模板的成员函数都是模板函数(13)语句ofstream f(”SALARY. DAT",ios::app iios::binary);的功能是建立流对象f,试图打开文件SALARY. D AT 并与之连接,并且A)若文件存在,将文件写指针定位于文件尾;若文件不存在,建立一个新文件B)若文件存在,将其置为空文件;若文件不存在,打开失败C)若文件存在,将文件写指针定位于文件首;若文件不存在,建立一个新文件D)若文件存在,打开失败;若文件不存在,建立一个新文件(14)下面程序的运行结果是#include<iostream. h>void main(){int num=1;int &ref=num;ref=ref+2;cout<<num;num=num+3;cout<<ref<<endl;}A)13 B)16 C)36 D)33(15)假定AB为一个类,则该类的拷贝构造函数的声明语句为。
A. AB &(AB x) B. AB(AB x)C. AB(AB &) D. AB(AB * x)(16)对于结构中定义的成员,其隐含访问权限为。
A. public B. protectedC. private D. static(17)当使用fstream流类定义一个流对象并打开一个磁盘文件时,文件的隐含打开方式为。
A. ios::in B. ios::outC. ios::int | ios::out D. 没有(18)下列关于C++语言类的描述中错误的是A)类用于描述事物的属性和对事物的操作B)类与类之间通过封装而具有明确的独立性C)类与类之间必须是平等的关系,而不能组成层次结构D)类与类之间可以通过一些方法进行通信和联络(19)下列描述中哪个是正确的。
A)私有派生的子类无法访问父类的成员B)类A的私有派生子类的派生类C无法初始化其祖先类A对象的属性,因为类A的成员对类C是不可访问的C)私有派生类不能作为基类派生子类D)私有派生类的所有子孙类将无法继续继承该类的成员(20)下列关于构造函数说法不正确的是A)构造函数必须与类同名B)构造函数可以省略不写C)构造函数必须有返回值D)在构造函数中可以对类中的成员进行初始化(21)如果友元函数重载一个运算符时,其参数表中没有任何参数则说明该运算符是A)一元运算符 B)二元运算符C)选项A)和选项B)都可能 D)重载错误(22)在重载一个运算符时,如果其参数表中有一个参数,则说明该运算符是A)一元成员运算符 B)二元成员运算符C)一元友元运算符 D)选项B)和选项C)都可能(23)下列关于模板的说法正确的是A)模板的实参在任何时候都可以省略 B)类模板与模板类所指的是同一概念C)类模板的参数必须是虚拟类型的 D)类模板中的成员函数全部都是模板函数(24)表示在输出时显示小数位,和在文件输入时判断文件尾的函数分别是A) showbase()和eof() B)showpoint()和eof()C)showpoint()和bad() D)showpoint()和good()(25)一个类的友元函数能够访问该类的A)私有成员 B)保护成员 C)公有成员 D)所有成员(26)C++语言对C语言做了很多改进,C++语言相对于C语言的最根本的变化是A)增加了一些新的运算符B)允许函数重载,并允许设置缺省参数C)规定函数说明符必须用原型D)引进了类和对象的概念(27)对类成员访问权限的控制,是通过设置成员的访问控制属性实现的,下列不是访问控制属性的是A)公有类型 B)私有类型C)保护类型D)友元类型(28)在类的定义中,用于为对象分配内存空间,对类的数据成员进行初始化并执行其他内部管理操作的函数是A)友元函数 B)虚函数 C)构造函数 D)析构函数(29)类的析构函数的作用是A)一般成员函数的初始化 B)类的初始化C)对象的初始化 D)删除类创建的对象(30)下列说法正确的是A)内联函数在运行时是将该函数的目标代码插入每个调用该函数的地方B)内联函数在编译时是将该函数的目标代码插入每个调用该函数的地方C)类的内联函数必须在类体内定义D)类的内联函数必须在类体外通过加关键字inline定义(31)下面对静态数据成员的描述中,正确的是A)静态数据成员可以在类体内进行初始化B)静态数据成员不可以被类的对象调用C)静态数据成员不能受private控制符的作用D)静态数据成员可以直接用类名调用(32)下面对于友元函数描述正确的是A)友元函数的实现必须在类的内部定义B)友元函数是类的成员函数C)友元函数破坏了类的封装性和隐藏性D)友元函数不能访问类的私有成员(33)在公有派生情况下,有关派生类对象和基类对象的关系,下列叙述不正确的是A)派生类的对象可以赋给基类的对象B)派生类的对象可以初始化基类的引用C)派生类的对象可以直接访问基类中的成员D)派生类的对象的地址可以赋给指向基类的指针(34)下面程序的运行结果为#include<iostream. h>class A{public:A(){cout<<”1”;}~A(){cout<<”2”;}}class B:public A{public:B(){cout<<”3”;}~B(){cout<<”4”;}}void main(){B b;}A)1234 B)1324 C)1342 D)3142(35)下列关于虚基类的描述,错误的是A)设置虚基类的目的是为了消除二义性B)虚基类的构造函数在非虚基类之后调用C)若同一层中包含多个虚基类,这些虚基类的构造函数按它们说明的次序调用D)若虚基类由非虚基类派生而来,则仍然先调用基类构造函数,再调用派生类的构造函数(36)下列关于多态性的描述,错误的是A)C++语言的多态性分为编译时的多态性和运行时的多态性B)编译时的多态性可通过函数重载实现C)运行时的多态性可通过模板和虚函数实现D)实现运行时多态性的机制称为动态绑定(37)下列运算符中,在C++语言中不能重载的是A)* B)>= C):: D)/(38)定义静态成员函数的主要目的是A)方便调用 B)有利于数据隐蔽 C)处理类的静态成员变量 D)便于继承(39)设有以下类和对象的定义:class A{public:int m;……};A k1, k2, *p1, *p2;则下面针对成员变量m的引用,错误的是A)k1.m=1 B)k2一>m=2 C)pl一>m=3 D)(*p2).m=4(40)有关构造函数的说法中错误的是A)构造函数名字和类的名字一样 B)构造函数在说明类变量时自动执行C)构造函数无任何函数类型 D)构造函数有且只有一个(41)关于友元的描述中错误的是A)友元函数可以访问该类的私有数据成员B)一个类的友元类中的成员函数都是这个类的友元函数C)友元可以提高程序的运行效率D)类和类之间的友元关系可以继承(42)在面向对象方法中,实现信息隐蔽是通过对象的某一特性来实现的,这个特性是A)封装 B)类 C)对象 D)继承二、填空题(1)在面向对象的程序设计中,类描述的是具有相似性质的一组【1】。
(对象)(2) C++语句const char * const p="hello" , ,所定义的指针p和它所指的内容都不能被【2】。