1.关于类定义格式的描述中,( )是错的。
A. 一般类的定义格式分为说明部分和实现部分
B. 一般类中包含有数据成员和成员函数
C. 类中成员有三种访问数据:公有、私有和保护
D. 成员函数都应是公有的、数据成员都应是私有的
2.下列关键字中,( )不是类中定义数据成员使用的关键字。
A. static B. float C. extern D. double
3.( )不是构造函数的特征。
A、构造函数的函数名与类名相同;B、构造函数可以重载;
C、构造函数可以设置缺省参数; D、构造函数必须指定类型说明。
4、在C++中,关于下列设置参数默认值的描述中,( )是正确的。
A、不允许设置参数的默认值;
B、设置参数默认值只能在定义函数时设置;
C、设置参数默认值时,应该是先设置右边的,再设置左边的;
D、设置参数默认值时,应该全部参数都设置。
5、关于new运算符的下列描述中,( )是错误的。
A、它可以用来动态创建对象和对象数组;
B、使用它创建的对象或对象数组可以使用运算符delete删除;
C、使用它创建对象时要调用构造函数;
D、使用它创建对象数组时必须指定初始值。
6、重载函数在调用时选择的依据中,( )是错误的。
A、参数个数;B、参数的类型;C、函数名字;D、函数的类型。
7、( )是析构函数的特征。
A、一个类中只能定义一个析构函数;B、析构函数名与类名不同;
C、析构函数的定义只能在类体内;D、析构函数可以有一个或多个参数;
8、关于delete运算符的下列描述中,( )是错误的。
A、它必须用于new返回的指针;
B、它也适用于空指针;
C、对一个指针可以连续使用多次该运算符;
D、指针名前只有一对方括号符,不管所删除数组的维数。
9、在( )情况下适宜采用inline定义内联函数。
A、函数体含有循环语句;B、函数体含有递归语句;
C、函数代码小,频繁调用;D、函数代码多,不常调用;
10、定义析构函数时,应该注意( )。
A、其函数名与类名完全相同;B、函数返回类型是void类型;
C、无形参,也不可重载;D、函数体中必须有delete语句;
11、关于成员函数特征的下列描述中,( )是错误的。
A、成员函数一定是内联函数;B、成员函数可以重载;
C、成员函数可以设置缺省参数值;D、成员函数可以是静态的;
12、下列静态数据成员的特性中,( )是错误的。
A、说明静态数据成员时前边要加修饰符static;
B、静态数据成员要在类体外进行初始化;
C、静态数据成员不是所有对象所共用的;
D、引用静态数据成员时,要在其名称前加<类名>和作用域运算符;
13. 关于类成员函数的描述中,( )是错的。
A. 类中可以说明一个或多个成员函数
B. 类中的成员函数只能定义在类体外
C. 定义在类体外的成员函数前加inline可以成为内联函数(内置函数)
D. 在类体外定义成员函数时,在函数名前除了加类型说明符外,还需作用域符来限定该成员函数所属的类
C++是_______语言。
A.面向对象的程序设计 B.面向过程的程序设计
C.结构化程序设计 D.低级程序设计C++语言源程序一条语句的结束标志是_______
A.逗号 B.句号
C.分号 D.点号C++语言定义类中, 不是类成员的访问权限控制关键字。
A.public B.private
C.internal D.protectedC++语言中规定函数的返回的类型是由______。
A.return语句中的表达式类型所决定
B.调用该函数时的主调用函数类型所决定
C.调用该函数时系统临时决定
D.在定义该函数时所指定的函数类型所决定在C++语言中,能代表逻辑值”真”的是________。
A.等于0的数 B.大于0的数 C.非0整数 D.非0的数以下说法中正确的是________。
A.C++语言程序总是从第一个类成员函数开始执行
B.在C++语言程序中,要调用的函数必须在main()函数中定义
C.C++语言程序总是从main()函数开始执行
D.C++语言程序中的main()函数必须放在程序的类中C++语言中定义类的关键字是
A.class B.interface
C.public D.static为了满足运算符+的可交换性,必须将其重载为
A. 成员函数 B.静态成员函数 C.虚函数 D.友元函数C++处理异常的机制是由三部分组成。
A.编辑、编译和运行 B.检查、抛出和捕获
C.编辑、编译和捕获 D.检查、抛出和运行
11.在( )情况下适宜采用inline定义内联函数。
A.函数体含有循环语句
B.函数体含有递归语句
C.函数代码少、频繁调用
D.函数代码多、不常调用
12.如果类A被说明成类B的友元,则( )。
A.类A的成员即类B的成员
B.类B的成员即类A的成员
C.类A的成员函数不得访问类B的成员
D.类B不一定是类A的友元
13.定义析构函数时,应该注意( )。
A.其名与类名完全相同 B.返回类型是void类型
C.无形参,也不可重载 D.函数体中必须有delete语句
14.假定AB为一个类,则执行AB x;语句时将自动调用该类的( )。
A.有参构造函数 B.无参构造函数
C.拷贝构造函数 D.赋值构造函数
15.使用模板是为了( )。
A.提高代码的可重用性 B.提高代码的运行效率
C.加强类的封装性 D.实现多态性
(1)下面对静态数据成员的描述中,正确的是( )。
A.静态数据成员可以在类体外进行初始化
B.静态数据成员必须在类体内进行初始化
C.静态数据成员不能受private控制符的作用
D.静态数据成员可以直接用类名调用
(2)下面对静态数据成员的描述中,正确的是( )。
A.静态数据成员是类的所有对象共享的数据
B.类的每一个对象都有自己的静态数据成员
C.类的不同对象有不同的静态数据成员值
D.静态数据成员不能通过类的对象调用
(3) 下列关于对象数组的描述中,( )是错误的。
A.对于对象数组只能赋初值而不能再赋值
B.对象数组的下标从0开始
C.对象数组的每个元素都是相同类的对象
D.对象数组的数组名是一个常量指针
(4)下列关于子对象的描述中,( )是错误的。
A. 子对象是类的一种数据成员,它是另一个类的对象
B. 子对象不可以是自身类的对象
C. 对子对象的初始化要包含在该类的构造函数中
D. 一个类中只能含有一个子对象作其成员
(5)已知:print()函数是一个类的常成员函数,它无返回值,下列表示中,( )是正确的;
A.void print() const;B.const void print();
C.void const print();D.void print(const);
10. C++中实现异常处理的3种语句,下面哪一个不是_______
A.throw B.catch
C.class D.try
类模板的使用实际上是将类模板实例化成一个具体的_______
A.函数 B.对象
C.类 D.模板类在一个类,可以对一个操作符进行______种重载
A.1 B.2种以下 C.3种以下 D.多种下列函数中,________不是类的成员函数。
A.构造函数 B.友元函数
C.析构函数 D.拷贝构造函数某函数中有局部变量a,为使其不随函数调用结束而消失,应选择的存储类别是________
A.static
B.auto
C.register
D.auto或者register类的构造函数是在创建该类的一个 时被自动调用执行的
A.成员函数 B.数据成员
C.友元函数 D.对象下列有关重载函数正确的是
A.重载函数必须具有不同的返回值类型
B.重载函数形参类型必须不同
C.重载函数形参个数必须不同
D.重载函数的形参表必须不同类Point中有静态数据成员count,设p1和p2是类A的两个对象,在p1中把count设置为12后,p2中count的值为
A.0 B.12
C.随机值 D.无法确定下列关于类的对象性质描述中,正确的是
A.对象不能用作数组元素 B.对象之间不能相互赋值
C.一个对象能作为另一对象的成员 D.不可以说明指向对象的指针为了满足运算符+的可交换性,必须将其重载为()
A.成员函数 B.静态成员函数 C.虚函数 D.友元函数
12.下面对于友元函数描述正确的是
A.友元函数的实现必须在类的内部定义
B.友元函数破坏了类的封装和隐蔽性
C.友元函数是内的成员函数
D.友元函数不能访问类的私有成员
13.当一个派生类公有继承一个基类时,基类的所有public成员成为派生类的( )
A.private成员 B.protected成员
C.public成员 D.友元
14.设int *p,以下对new运算符正确使用形式是( )
A.p=new a[10]; B.*p =new int[10];
C.p=new int[10]; D.p=new int[10]={1,2,3,4,5};
15.下述静态数据成员的特性中,( )是错误的
A. 说明静态数据成员时前面要加修饰符static
B. 静态数据成员要在类外进行初始化
C. 引用静态数据成员时,要在静态数据成员名前加〈类名〉和作用域运算符
D. 静态数据成员不是所有对象所共用的
(1)下面关于友元函数的描述正确的是( )
A.友元函数的实现必须在类的内部定义 B. 友元函数是类的成员函数
C. 友元函数破坏了类的封装性和隐蔽性
D. 友元函数只能访问类的私有成员,不能访问公有和保护成员。
(2)关于友元类的描述中,错误的是( )
A.友元类中的成员函数都是友元函数 B. 友元类被说明在一个类中,它与访问权限无关
C. 友元类是被定义在某个类中的嵌套类
D. 如果Y是类X的友元,则类X不一定是类Y的友元
(3)若要将类MyClass定义为YourClass的友元类,则应该在( )类中定义。
A.MyClass B. YourClass C. 二个类中都应定义 D. 在两个类之外定义
(4)友元在访问类的对象的成员时( )。
A)直接使用类的成员名 B)使用this指针指向成员名
C)使用“类名::成员名”的形式 D)使用“对象名.成员名”的形式
(5)分析下列程序,指出正确的说法( )。
class one
{ private:
int x;
public:
friend class two;
};
class two {void fun(one& t);};
void two::fun(one& t) {cout<<t.x;}
A)类one的所有成员函数都是类two的友元
B)类two的所有成员函数都是类one的友元
C)只有类one的公有成员函数是类two的友元
D)只有类one的私有成员函数是类two的友元
(6)如果类A被说明成类B的友元,则( )。
A)类A的成员即类B的成员 B)类B的成员即类A的成员
C)类A的成员函数不得访问类B的成员 D)类B不一定是类A的友元
(7)下列各类函数中,( )不是类的成员函数。
A)构造函数 B)析构函数 C)友元函数 D)拷贝初始化构造函数
(8)类A是类B的友元,类B是类C的友元,则( )。
A)类B是类A的友元 B)类C是类A的友元 C)类A是类C的友元 D)以上都不对
(9)友元的作用是( )。
A)加强类的封装性 B)实现数据的隐藏性 C)增加成员函数的种类 D)提高程序的运行效率
(10)友元关系不能( )。
A)继承 B)是类与类的关系
C)是一个类的成员函数与另一个类的关系 D)提高程序的运行效率
19. C++语言定义类中, 是具有公共的访问权限控制关键字。
A.internal B.private
C.public D.protected
C++语言中规定函数的返回的类型是由______。
A.return语句中的表达式类型所决定
B.调用该函数时的主调用函数类型所决定
C.调用该函数时系统临时决定
D.在定义该函数时所指定的函数类型所决定在C++语言中,不能代表逻辑值”真”的是________。
A.1 B.true C.99 D.false以下说法中不正确的是________。
A.从已有类产生新类的过程就是类的派生
B.如果派生类声明了一个和某基类成员同名的新成员,派生的新成员就隐藏了外层同名成员
C.当类的继承方式为公有继承时,基类的私有成员可以直接访问
D.一个派生类,可以同时有多个基类t为int 类型,进入下面的循环之前,t的值为0
do{……}while(t==1);
则以下叙述中正确的是
A.循环里的内容不会被执行 B.循环里的内容会被执行
C.循环控制表达式不合法 D.以上说法都不对下述对构造函数的作用描述不正确的是
A.构造函数是在对象被创建时利用特定的值构造对象
B.构造函数将对象初始化为一个特定的状态
C.构造函数在对象被释放的时候会自动调用
D.如果类中没写构造函数,编译器会自动生成一个默认构造函数对于友元描述正确的是_______
A.友元函数是在类中用关键字const修饰的成员
B.友元关系是不能传递的
C.友元关系是双向的
D.以上皆正确为了满足运算符+的可交换性,必须将其重载为
B. 成员函数 B.静态成员函数 C.虚函数 D.友元函数
C. C++处理异常的机制是由三部分组成。
12.如果类A被说明成类B的友元,则( )。
A.类B不一定是类A的友元
B.类A的成员函数不得访问类B的成员
C.类B的成员即类A的成员
D.类A的成员即类B的成员
13.在公有派生类的成员函数不能直接访问基类中继承来的某个成员,则该成员一定是基类中的( )
A. 私有成员 B. 公有成员 C. 保护成员 D. 保护成员或私有成员
14.以下关于函数重载的说法正确的是( )。
A.编译器只能根据形参的类型确定调用的函数
B.函数重载中是否具有默认形参值不重要
C.类不具备函数重载的特性
D.以上都不正确
15.假定AB为一个类,则执行AB x;语句时将自动调用该类的( )。
A.有参构造函数 B.赋值构造函数
C.拷贝构造函数 D.无参构造函数
(1) 定义重载函数的下列条件中,( )是错误的。
A. 要求参数个数不同 B. 要求参数类型不同
C. 要求函数返回值类型不同 D. 要求在参数个数相同时,参数类型的顺序不同
(2) 关于下列虚函数的描述中,( )是正确的。
A. 虚函数是一个static存储类的成员函数
B. 虚函数是一个非成员函数
C. 基类中说明了虚函数后,派生类中可不必将对应的函数说明为虚函数
D. 派生类的虚函数与基类的虚函数应具有不同的类型或个数
(3) 关于纯虚函数和抽象类的描述中,( )是错误的。
A. 纯虚数是一种特殊的虚函数,它没有具体实现
B. 抽象类中一定具有一个或多个纯虚函数
C. 抽象类的派生类中一定不会再有纯虚函数
D. 抽象类一般作为基类使用,使纯虚函数的实现由其派生类给出
(4) 以下一种类中,( )不能建立对象。
A. 抽象类 B. 派生类 C. 虚基类 D. 基类
(5)下列函数中不能重载的是( )。
A)成员函数 B)非成员函数 C)析构函数 D)构造函数
(10)下列关于虚析构函数说法不正确的是( )。
A)在析构函数前加上关键字virtual,就说明了虚析构函数。
B)如果一个基类的析构函数说明为虚析构函数,则它的派生类中的析构函数须用virtual关键字说明后才是虚析构函数。
C)说明虚析构函数的目的在于使用delete删除一个对象时,能保证析构函数被正确地执行。
D)设置虚函数后,可以采用动态联编的方式选择析构函数。
(11)编译时多态性通过使用( )获得。
A)继承 B)虚函数 C)重载函数 D)析构函数
(12)可以使用( )来阻止基类的成员函数调用派生类中的虚函数。
A)成员名限定 B)指针 C)引用 D)关键字virtual
(13)抽象类应该含有( )。
A)至多一个虚函数 B)至多一个虚函数是纯虚函数
C)至少一个虚函数 D)至少一个虚函数是纯虚函数
(15)对于抽象类的使用需要注意的地方,下列不正确的说法是:( )
A)抽象类只能用作其它类的基类,不能建立抽象类对象。
B)抽象类不能用作参数类型,函数返回类型或显式转换的类型。
C)定义抽象类时至少要定义一个虚函数。
D)可以说明指向抽象类的指针和引用,此指针可以指向它的派生类,进而可以实现多态性。
(17)将一个类的成员函数尽可能地设置成虚函数总是有益的,下列设置虚函数必须注意的情况中,哪个是错误的?( )
A)只有类的成员函数才能说明为虚函数。 B)静态成员函数不能是虚函数。
C)构造函数不能是虚函数。 D)析构函数不能是虚函数。
(18)在派生类中重新定义虚函数时必须在( )方面与基类保持一致。
A)参数个数 B)赋值 C)参数名字 D)操作内容
(19)以下哪个基类中的成员函数表示纯虚函数( )。
A)virtual void vf(int) B)void vf(int)=0; C)virtual void vf( )=0 D)virtual void vf(int){}
(20)通过一个对象调用虚函数时,C++系统对该调用采用( )。
A)动态联编 B)静态联编 C)不确定是哪种联编 D) 函数重载
(二)判断正误
(1) 函数参数个数和类型都相同,只是返回值类型不同,这不是重载函数。( 1 )
(2)虚函数是为实现某种功能而假设的函数,派生类的虚函数定义影响其基类,而基类的虚函数定义不影响其派生类。( 0)
(3)可以在类的内部说明虚函数,这时就可以定义一个虚的内联函数。(0 )
(4)空的虚函数与纯虚函数都没有函数体,因此空的虚函数与纯虚函数在概念上是一样的,只是叫法不一样。( 0 )
(5)只要基类的析构函数被说明为虚函数,则派生类的析构函数,无论是否使用virtual进行说明,都自动地成为虚构函数。(1 )
(6)虚函数是一种virtual说明的成员函数。( 1 )
(7)抽象类中只能有一个纯虚函数。( 0 )
(8)析构函数不能说明为虚函数。(0 )
(9)程序中可以说明抽象类的指针或引用,但是不能说明抽象类的对象。(1 )
(1) 下列对派生类的描述中,( )是错误的。
A. 一个派生类可以作为另一个派生类的基类 B. 派生类至少应有一个基类
C. 基类中成员的访问权限被派生类继承后都不改变
D. 派生类的成员除了自己定义的成员外,还包含了它的基类成员
(2) main()函数可以访问派生类的对象中它的哪一类基类成员?( )
A. 公有继承的基类的公有成员 B. 公有继承的基类的保护成员
C. 公有继承的基类的私有成员 D. 保护继承的基类的公有成员
(3)可以用p.a的形式访问派生类对象p的基类成员a,其中a是( ) 。
A)私有继承的公有成员 B)公有继承的私有成员
C)公有继承的保护成员 D)公有继承的公有成员
(4)下面叙述不正确的是( )。
A)派生类一般都用公有派生 B)对基类成员的访问必须是无二义性的
C)赋值兼容规则也适用于多重继承的组合 D)基类的公有成员在派生类中仍然是公有的。
(5)下面叙述不正确的是( )。
A)基类的保护成员在派生类中仍然是保护的
B)基类的保护成员在公有派生类中仍然是保护的
C)基类的保护成员在私有派生类中仍然是私有的
D)对基类成员的访问必须是无二义性
(6)在公有派生情况下,有关派生类对象和基类对象的关系,不正确的叙述是( )。
A)派生类的对象可以赋给基类的对象 B)派生类的对象可以初始化基类的引用
C)派生类的对象可以直接访问基类中的成员D)派生类的对象的地址可以赋给指向基类的指针
(7)C++类体系中,不能被派生类继承的是()
A)虚函数 B)构造函数 C)静态成员函数 D)“+”运算符函数
(10) 关于多继承二义性的描述,( )是错误的。
A. 派生类的多个基类中存在同名成员时,派生类对这个成员访问可能出现二义性
B. 如果一个派生类是从具有两个同名间接基类的两个直接基类派生来的,则派生类对该公共基类的访问可能出现二义性
C. 解决二义性最常用的方法是使用作用域运算符对成员进行限定
D. 派生类和它的基类中出现同名函数时,将出现二义性
(11) 多继承派生类建立对象时,( )被最先调用。
A. 派生类自己的构造函数 B. 虚基类的构造函数
C. 非虚基类的构造函数 D. 派生类中子对象类的构造函数
(12)设置虚基类的目的是( )。
A)消除两义性 B)简化程序 C)提高运行效率 D)减少目标代码
(13)下列虚基类的声明中正确的是( )。
A)class virtual B: public A B)class B: virtual public A
C)class B: public A virtual D)virtual class B: public A
正确答案:1-5DCBCD 6-10DACCC 11-13ACB
1-5ACCDC 6-10CADA
11-15CD(ABC)BA
1-5AAA无C
10-15CC(AB)AD
16-18DDC
11-15DBDBB
1-10CABCADCDDA
20-26DDCBCBD
12-15ADDD
1-5CCCCC
10-13BCAC
15D
17-20DCCC
正误判断
1-9=>100011001
选择
1-7DADCCBD
10-13DABB