大学C++复习题

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C++复习题

一、简答题

1.在c++中,内联函数中不能使用什么语句?

答:不允许使用循环语句和分支语句

2.在c++中,封装可以由那几个关键字提供控制方式?分别作用是什么?

答:在类定义体里,使用了private、protected、public三个关键字是用来说明数据成员和函数成员的访问权限。

public说明公有成员,该类成员都可以通过对象被访问的。

private说明私有成员,该类成员只能被自己的成员函数或友元访问;

protected说明保护型的成员,可以被自己的成员函数或友元访问,也可以被派生类的函数成员访问;

3.由于二义性原因,一个类如何防止从一个类中重复继承?

答:①通过使用作用运算符“::”明确指出访问的是哪个基类中的成员;②在类中定义同名成员;③虚基类(virtual 继承方式基类名)

4.在c++中,如果在多条继承路径有一个公共的基类,如果想使这个公共的基类只产生一个拷贝,则如何处理这个基类?用什么关键字?

答:将这个公共基类说明为虚基类,用virtual 关键字

5.简单成员函数是指声明中不含有什么关键字的函数?(关注存储类型)

答:简单成员函数是指存储类型为auto型

。static,extern,register

6.静态成员的特点?

答:静态成员的特点是:不管这个类创建多少个对象,其静态成员在内存中只保留一份副本,这个副本为该类的所有对象所共享。

7.当访问私有静态数据成员时,可通过什么来访问?

答:在类外,私有静态数据成员不能直接访问,必须通

过公有的成员函数访问。

8.有关继承,静态成员是否可以被继承?可以。友元是否可以被继承?不可以构造函数是否可以被继承?不可以

9.c++不允许重载什么运算符?

答:成员访问运算符.;作用域运算符∷

;条件运算符?:;成员指针运算符*;长度运算符sizeof()10.那些运算符只能用类运算符来重载?

答:= () [] * 这四个只能用类重载

11.c++提供格式宽度控制方式有哪几种?关键字是?

答1.int width(int val) int width( ) int ios::width(int n) 2.setw(int n)

12.十进制数0.1的二进制表示是什么?

答:(0.1)10= (0.000110011...)2,它是无限循环小数。也就是说,十进制数0.1无法精确用二进制表示!

13.简述程序设计的步骤。

答:程序设计一般遵循以下步骤:明确问题;系统设计;用某种语言进行编程;测试与调试;运行与维护

14.简述编译与解释的区别。

答:编译是指把高级语言程序首先翻译成功能上等价的机器语言程序或汇编语言程序,然后执行目标代码程序,在目标代码程序的执行中不再需要源程序。

解释则是指对源程序中的语句进行逐条翻译并执行,翻译完了程序也就执行完了,这种翻译方式不产生目标程序。一般来说,编译执行比解释执行效率要高

15.简述C++程序的编译执行过程

答:编译过程主要分为4个阶段:编译预处理;编译、优化阶段;汇编过程;链接程序(?)

16.下面哪一些是合法的C++字面常量,它们的类型是什么?

-5.23, 1e+50, -25, 105, 20

.20, e5, 1e-5, -0.0e5, '\n'

-000, 'A', '5', '3.14', false

red, '\r', '\f' "Today is Monday.", "\""

答:字面常量是指在程序中直接写出常量值的常量。-5.23, 1e+50,-25, 20 ,.20, 1e-5, -0.0e5, '\n', -000, 'A', '5', '\r', '\f' , "Today is Monday.", "\""都是字面常量。其中:

整数类型常量:-25, 20, -000

实数类型常量:-5.23, 1e+50 , .20, 1e-5, -0.0e5

字符常量: '\n', 'A', '5', '\r', '\f'

字符串常量:"Today is Monday.", "\""

17.什么是符号常量?符号常量的优点是什么?

答:符号常量是指有名字的常量,在程序中通过常量的名字来使用这些常量。程序中使用符号常量有以下优点:(1)增加程序易读性;(2)提高程序对常量使用的一致性;(3)增强程序的易维护性

18.如何理解变量?变量定义和声明的作用是什么

答:值可以改变的量叫变量,可变的数据.使用变量前,C++要对变量做声明

19.指针类型主要用于什么场合?引用类型与指针类型相比,其优势在哪里?

答:指针类型主要用于参数传递和对动态变量的访

问。在C++中,指针类型还用于访问数组元素,以提高访问效率。

引用类型与指针类型都可以实现通过一个变量访问另一个变量,但访问的语法形式不同:引用是采用直接访问形式,指针则采用间接访问形式。在作为函数参数类型时,引用类型参数的实参是一个变量,而指针类型参数的实参是一个变量的地址。

除了在定义时指定的被引用变量外,引用类型变量不能

再引用其他变量;而指针变量定义后可以指向其他同类型的变量。因此,引用类型比指针类型要安全。 20.const int * p1 和 int * const p2的区别是什么?

答:const int * p1 是指向常量的指针,指针指向一个常量,无需初始化,指针本身可以改变,但是指针指向的值不能改变。

int * const p2是指向常量的引用,使用时必须初始化,而且初始化后,引用值不可以改变,引用的常量也不能改变。

21.表达式中的类型转换规则是什么?下面的表达式计算时如何进行操作数类型转换? (1)3/5*12.3 (2)'a'+10*5.2 (3)12U+3.0F*24L

表达式中类型转换规则是:基于单个操作符依次进行转换。 1)3 与 5 同类型,不转换,结果为 0,转换成double 型后与 12.3 做乘法。 2)10 转换成double 型与 5.2 做乘法,’a ’转换成

double 型后与前者结果做加法。

22.将下列公式表示成C++的表达式:

(1)a

ac b b 242-+- (可利用C++标准库中的求

平方根的函数:sqrt(x))

(-1*b+sqrt(b*b-4*a*c))/(2*a)

(2)))()((c s b s a s s --- :sqrt(s*(s-a)*(s-b)*(s-c))

(3)3

45.213

3r c

b d

c b a ⋅⋅+

++

⋅⋅π

((a*b)/(c*d))*(3/(1+(b/(2.5+c))))+(4*pi*r*r*r/3)

23.派生类构造函数执行的次序是怎样的?

答:派生类构造函数执行的一般次序为:调用基类构造函数;调用成员对象的构造函数;派生类的构造函数体中的内容。

24.如果在派生类B 已经重载了基类A 的什么叫做多态性 ?

在C++中是如何实现多态的?

答:多态是指同样的消息被不同类型的对象接收时导致完全不同的行为,是对类的特定成员函数的再抽象。C++支持的多态有多种类型,重载(包括函数重载和运算符重载)和虚函数是其中主要的方式。

25.一个成员函数fn1(),没有重载成员函数fn2(),如何调用基类的成员函数fn1()、fn2()?

答:A::fn1(); fn2();

26.如果类A 是类B 的友元,类B 是类C 的友元,类D

是类A 的派生类,那么类B 是类A 的友元吗?类C 是类A 的友元吗?类D 是类B 的友元吗?

答:类B 不是类A 的友元,类C 不是类A 的友元,类D 不是类B 的友元

二、选择题

1. 下列的各类函数中, C 不是类的成员函数。 A) 构造函数 B) 析构函数

C) 友元函数 D) 拷贝初始化构造函数 2.作用域运算符“::”的功能是 D 。 A) 标识作用域的级别的 B) 指出作用域的范围的

C) 给定作用域的大小的

D) 标识成员是属于哪个类的

3. A 是析构函数的特征。 A) 一个类中只能定义一个析构函数

B) 析构函数名与类名不同

C) 析构函数的定义只能在类体内 D) 析构函数可以有一个或多个参数

4下述静态数据成员的特性中, D 是错误的。 A) 说明静态数据成员时前边要加修饰符static B) 静态数据成员要在类体外进行初始化

C) 引用静态数据成员时,要在静态数据成员前加<类名>

和作用域运算符

D) 静态数据成员不是所有对象所共用的 5. 友元关系不能 C

相关文档
最新文档