Visual C++面向对象程序设计教程与实验(第二版)清华大学出版社第2章习题参考答案

1.分析下列程序的执行结果:

输出随机数

2. 分析下列程序的执行结果:

i=0

3. C++语言对C语言在结构化程序设计方面进行了哪些扩充? 主要在以下方面进行了扩充:

文件扩展名、注释符、名字空间、输入输出、变量的定义、强制类型转换、动态内存的分配与释放、作用域运算符::、引用、const修饰符、字符串、函数

4. 下述C++程序有若干处错误,试找出并纠正之。 正确程序为: #include const float PAI=3.14159265; float square(float r) {return PAI*r*r;}

float square(float high,float length=0 ) {return high*length;} float (*fs)(float,float=0); void main() {

fs=□

cout<<\}

5. 引用类型与指针类型有什么区别?

指针的内容或值是某一变量的内存单元地址,而引用则与初始化它的变量具有相同的内存单元地址。指针是个变量,可以把它再赋值成其它的地址,然而,建立引用时必须进行初始化并且决不会再指向其它不同的变量。

C++没有提供访问引用本身地址的方法,因为它与指针或其它变量的地址不同,它没有任何意义。引用总是作为变量的别名使用,引用的地址也就是变量的地址。引用一旦初始化,就不会与初始化它的变量分开。

6.函数、内联函数以及宏的区别。

程序的模块在C++中通过函数来实现,函数由函数说明和函数体2部分组成。 内联函数是C++语言特有的一种函数附加类别,是通过在函数声明之前插入“inline”关键字实现的。编译器会将编译后的全部内联函数的目的机器代码复制到程序内所有的引用位置并把往返传送的数据也都溶合进引用位置的计算当中,用来避免函数调用机制所带来的开销,提高程序的执行效率。显然这是以增加程序代码空间为代价换来的。

宏定义是编译预处理命令,分为带参数的和不带参数的宏定义。在编译之前进行预处理时,用宏定义中的字符串替换程序中所有出现的宏名。

7. 函数重载有什么好处?

函数重载使函数方便使用,便于记忆,也使程序设计更加灵活,增加程序的可读性。例如,求两个数中最大值的函数max,不管其参数是整数类型、实数类型、字符串,都可以使用同名函数来实现,调用时只需使用max就可以了,编译器将根据实参的类型判断应该调用哪一个函数。

8. 模板有什么作用?函数模板和模板函数有什么区别?

所谓模板是一种使用无类型参数来产生一系列函数或类的机制,是C++的一个重要特征。通过模板可以产生类或函数的集合,使它们操作不同的数据类型,从而避免为每一种数据类型产生一个单独的类或函数。

函数模板提供了传递类型的机制。函数模板定义不是一个实实在在的函数,编译系统不为其产生任何执行代码。该定义只是对函数的描述,表示它每次能单独处理在类型形式参数表中说明的数据类型。

函数模板只是说明,不能直接执行,需要实例化为模板函数后才能执行。当编译系统发现有一个函数调用:

<函数名><实参表>;

时,将根据<实参表>中的类型生成一个重载函数,即模板函数。该模板函数的定义体与函数模板的函数定义体相同,而<形参表>的类型则以<实参表>的实际类型为依据。

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4