C++期末选择判断易错题(复习)

易错~选择题

1.关于this指针使用说法正确的是________。
A、保证每个对象都拥有自己的数据成员,但共享处理这些数据的代码
B、保证基类私有成员在子类可以被访问
C、保证基类保护成员在子类可以被访问
D、保证基类共有成员在子类可以被访问

正确答案: A

2.关于类模板描述不正确的是________。
A、它的存在不代表一个具体的、实际的类,而是代表一类的类
B、根据它可以定义多个对象
C、它可以使类中的某些数据取任意类型
D、根据它可以产生一系列类

正确答案: B

3.关于多继承二义性的描述,________是错误的。
A、派生类的多个基类中存在同名成员时,派生类对这个成员访问可能出现二义性
B、一个派生类是从具有共同的间接基类的两个基类派生来的,派生类对该公共基类的访问可能出现二义性
C、解决二义性最常用的方法是作用域运算符对成员进行限定
D、派生类和它的基类中出现同名函数时,将可能出现二义性

正确答案: D

4.使用fseek函数可以实现的操作是________。
A、改变文件指针的当前位置
B、文件的顺序读写
C、文件的随机读写
D、以上都不对

正确答案: A

5.关于关键字class和typename,下列表述正确的是________。
A、程序中所有的class都可以替换为typename
B、程序中所有的typename都可以替换为class
C、A)和B)都可以
D、A)和B)都不可以

正确答案: B

6.关于new运算符的下列描述中,________是错的。
A、它可以用来动态创建对象和对象数组
B、使用它创建的对象和对象数组可以使用运算符delete删除
C、使用它创建对象时要调用构造函数
D、使用它创建对象数组时必须指定初始值

正确答案: D

7.关于运算符重载,下列表述中正确的是________。

A、C++已有的任何运算符都可以重载
B、运算符函数的返回类型不能声明为基本数据类型
C、在类型转换函数的定义中不需要声明返回类型
D、可以通过运算符重载来创建C++中原来没有的运算符

正确答案: C

8.下列函数模板的定义中,合法的是________。
A、templateT abs(T x){return x<0?-x:x;}
B、template classT abs(T x){return x<0?-x:x;}
C、template Tabs(T x){return x<0?-x:x;}
D、template T abs(T x){return x<o?-x:x;}

正确答案: A

9.在派生类中,重载一个虚函数时,要求函数名、参数的个数、参数的类型、参数的顺序和函数的返回值________。

A、相同
B、不同
C、相容
D、部分相同

正确答案: A

10.下列说法错误的是________。
A、公有继承的基类中的public成员在派生类中仍是public的
B、公有继承的基类中的private成员在派生类中仍是private的 (不可访问,根本看不到)
C、私有继承的基类中的public成员在派生类中变成private的
D、保护继承的基类中的public成员在派生类中变成protected的

正确答案: B

11.在C++语言中,数据封装要解决的问题是________。
A、数据的规范化
B、便于数据转换
C、避免数据丢失
D、防止不同模块之间的数据非法访问

正确答案: D

12.C++泛型编程通过________实现。
2.0 分
A、void
B、template
C、NULL
D、typedef

正确答案: B

  1. 派生类的构造函数的成员初始化列表中,不能包含
    A、基类的构造函数
    B、派生类中子对象的初始化
    C、基类子对象的初始化
    D、派生类中一般数据成员的初始化
    正确答案: C
    //派生类的构造函数会调用积累的构造函数。韩对于积累子对象的初始化会在积累的构造函数中进行。派生类会为基类提供参数,当基类的构造函数受到参数时会将参数传递给相应的基类子对象。

易混淆~判断

1.对于重载函数,要求函数类型相同但是参数不同 ×
//函数重载要求函数的参数个数不同或者参数类型不同,函数类型不要求,而且,因为调用函数的时候无法确认函数的返回类型,所以仅返回类型不同的函数都可以匹配,这样就造成二义性,所以仅仅是返回类型不同是不能重载的。
2.用new运算符创建对象时不会调用构造函数 ×
3.无论什么方式的继承,基类的私有成员都不能被派生类访问 √
4.要达到动态联编的效果,基类和派生类的对应函数的名字,返回类型,参数个数和类型必须相同 √
5.如果派生类没有实现虚函数,那么它将使用基类的虚函数 √
6.构造函数可以重载,但析构函数不能重载 √
构造函数、析构函数都不能被继承 √
//因为析构函数没有参数,不可能进行参数分区
7.可以在类的构造函数里对静态数据成员进行初始化 ×
//静态数据成员属于类,而不管是否存在该类的对象,只有创建对象才会调用构造函数,所以不应该在类的构造函数里对静态数据成员进行初始化
8.一个类的构造函数可以不包含对其子对象的初始化 √
//形式上可以,但是会调用缺省构造函数来初始化,本题有二义性
9.公有继承:public成员,protected成员保持不变,private成员不可见,即protected成员,private成员不可直接访问。
私有继承:public和protected变成了private,派生类的其他成员可以直接访问它们,但在类外通过类的对象不能直接访问,而private成员不可直接访问。
保护继承:public和protected变成了protected,派生类的其他成员可以直接访问它们,但在类外通过类的对象不能直接访问,而private成员不可直接访问。
10.抽象类是一些没有说明对象的类 ×
//抽象类是一些不能说明对象的类
11.动态联编是在运行时选定调用的成员函数的 √
12.在派生类的对象被创建时,要保证虚基类的构造函数被调用一次 √
13.对于从基类继承的虚函数,派生类也可以不进行重定义 √
14.抽象类不能用于创建对象 √
15.类内的函数名不能和外部已有的全局函数名相同 √
16.定义类的非成员函数运算符重载,必须将它声明为友元函数 ×
//声明为友元函数,可以操作类的私有成员。不是友元函数,不能操作私有成员,但可以通过公有成员操作私有成员(如果需要的话)
17.作为虚函数隐含参数的this指针,决定了虚函数调用时执行的代码 √
18.运算符重载:
不能重载的运算符有:“.” “.*” “::” “?:” sizeof
赋值运算符=和[ ]只能作为类成员函数重载
<<和>>重载只能作为友元函数
19.包含空格的字符数组输入时,常常使用C++的cin.outline()函数实现 ×
20.在类A的声明中有一个成员函数定义如下 A *function()const{ return this}是否正确 ×

  • 5
    点赞
  • 83
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值