文档详情

2012级C++面向对象程序设计试题A-计算机学院2013夏_参考答案.doc

发布:2017-06-07约5.43千字共5页下载文档
文本预览下载声明
2012-2013学年第2学期 2012级《C++面向对象程序设计》期末考试试题(A卷) 考试时间:2013年6月26日 参考答案 一、 单选题(共12分,每题2分) D C (B) B B A 二、 判断正误,对于你认为错误的论述,说明原因或举出反例。(共20分,每题2分) 1. 代码double dval; float *pi = dval; 中会发生隐式类型转换,因此不存在语法错误。 错误。Double占8字节,float 占4字节,转换是不安全的,不会发生隐式转换,而是语法错误。 2. 已知类A,且语句const A a; a.fun( );是合法的,则fun( )一定是常成员函数。 错误。如fun()是A中的静态成员函数。 3. 类B继承类A,那么sizeof(B)的值大于sizeof(A)的值。 错误。是大于或等于 4. 单参构造函数一定可以被用来执行隐式类型转换。 错误。不一定。如用explicit修饰的构造函数,或私有的,或只声明但没有实现的。 5. 类中没有声明虚函数,则不会为该类生成虚拟表。 错误。不一定。如基类中有虚函数,则在创建该类对象时,仍会生成虚拟表。 6. 异常必须在其产生的当前函数中捕获,而不能在外层函数中捕获该异常。 错误。可以。如 try { f( ); } catch(…) {}, 如果f()中没有try_catch结构,f( )产生的异常可以被catch(…)捕获。 7. 由于抽象类不能实例化,但能派生新类,所以抽象类中的构造函数和拷贝构造函数应该是protected的。 错误。抽象类表示一种泛化关系,其接口函数应在子类中存在,以保证接口的一致性。特别的,构造函数和拷贝构造函数应为public。 8. 虚函数可以访问虚函数和非虚函数,但非虚函数不能访问虚函数。 错误。非虚函数的非静态函数可访问虚函数。 9. 重载的析构函数应与重载的构造函数一一对应。 错误。析构函数不能重载。 10. 假设类A及其祖先类中均不含有指针型或引用型数据成员,执行代码块{ A a; A b(a); }时,即便使用类A的缺省拷贝构造函数也可能造成内存泄露。 正确。 三、 回答下列各题(每题4分,共28分) 1. 某个C++应用程序由1个.h文件和2个.cpp文件组成,各文件如下: //fun.h class A { public: void fun(int = 0); }; // fun.cpp void A::fun(int num = 0) { /* 略 */ } //main.cpp int main( ) { A obj; obj.fun( ); return 0; } 请指出程序代码中存在哪些问题或有待改进的地方?如何改进? a) 最好在fun.h中加入包含警戒 b) fun.cpp中应#include”fun.h” c) main.cpp中应#include”fun.h” d) fun函数的参数,在类定义和外联实现中均给出了缺省值。 2. 已知字符串类string,请说明函数void fun(string); void fun(string ); 和void fun(const string); 之间在语义和使用上的区别。 void fun(string); 以传值的方式传递一个字符串参数,参数匹配过程中,会调用string类的拷贝构造函数,构造一个新的字符串供fun函数存取。使用时,实参可以是任意一个string对象。实参可以是char*. void fun(string );以传引用的方式传递一个字符串参数,参数匹配过程中,不用调用string类的拷贝构造函数,而是直接传递一个引用,在fun中对参数的任何修改,影响原始的实参。使用时,要求实参必须是变量型。 void fun(const string);以传引用的方式传递一个字符串参数,参数匹配过程中,不用调用string类的拷贝构造函数,而是直接传递一个引用。同时不允许在fun中对参数进行任何修改操作。使用时,实参可以是变量,也可以使const型。实参可以是char*. 3. 可以对局部对象显式调用析构函数吗?请说明理由。 不可以。若可以,就会产生诸如构造了一个对象,却调用了多次析构函数的情形。所以禁止显式调用析构函数。 4. 请问如何修改类A的设计,使得既可以在类外得到类A的多个实例,又能够禁止从类A派生其它类? class A { public: A(int n):val(n) { } private: int val; }; class A { public: static A * CreateA(int n) { return new A(n); }
显示全部
相似文档