南京大学金陵学院2009-2010学年C++期末(袁杰老师)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
南京大学金陵学院期末试卷
2009~2010 学年第一学期
课程名称:面向对象程序设计与 Visual C++ 教师姓名:袁杰试卷类型:闭卷
专业:______________学号:_____________姓名:_______________成绩___________
一、主观题(全都是不定项选择,错选得0分,理由不正确得0分):(80分)9.已知classMyClass{
1.下列说法正确的有:(BD )public:
A.函数模版不能含有常规形参
B.函数模版的一个实例就是一个函数定义
C.类模版的成员函数不能是模版函数
D.用类模版定义对象时,不能省略模版实参
2.已知Value是一个类,value是Value类的一个对象,下面以非成员函数形式重载的运算符函数原型中,正确的有:(A)
A.Value operator+(Value v, inti);
B.Value operator+(Valuev=value, inti);
C.Value operator+(Value v,inti=0);
D.Value operator+(Value v=value, inti=0);
理由是:___参数不能初始化
3.下面是一个模版声明的开始部分:
Template
MyClass() {cout<<4;}
}a,b[3],*p[3];
上述程序段输出为_____4444_______
理由是:________________________________________ 10.以下乘法运算符重载定义中正确的是:(BCD)A.MyClass operator*(double,double); B.MyClass operator*(double,MyClass); C.MyClass operator*(MyClass,double); D.MyClass operator*(MyClass,MyClass);
理由是:___操作数中至少有一个是自定义类型____ 11. 已知
class Constants{
public:
由此可知:(A )static double getPI() {return 3.1416;} A.这可能是一个函数模版的声明}constant;
B.这可能是一个类模版的声明以下能输出3.1416的有:(BC )
C.这既可能是一个函数模版的声明,也可能是一个类模版的声明
D.这肯定是一个错误的模版声明
理由是:___函数的模声明为template
4.派生类以protected方式继承基类,基类的protected A. cout<
B. cout< C. cout< D. cout< 理由是:________________________________________ 12.下列模版的定义正确的有:(A) 成员和public成员在派生类中的访问属性为:(D ) A. template A.public和public C.protected和public B.public和protected D.protected和protected B. template class C. template T 理由是:基类的私有成员公有成员都以protected的身份出现5. C++中的模版包括:(C) A.对象模版和类模版B.对象模版和函数模版 B.函数模版和类模版D.对象、函数和类模版 6.面向对象程序设计中,信息隐蔽可以通过(C) A.继承B.多态性C.封装D.模版 7. 8.已知 classMyClass{ int value; public: MyClass(int n, int m=0){value=m-n;} MyClass(int n):value(n){}; intgetValue()const {return value;} }; MyClass的构造函数有_____2___个。D. template T Get(T x){return x;} 理由是:________________________________________ 13.以下程序输出结果是:_____0375___________ class Base{ int x; public: Base(int n=0):x(n){cout< intgetX()const{return x;} }; classDerive:public Base{ int y; public: Derive(intm,int n):y(m),Base(n){cout< Derive(int m):y(m){cout< }; void main(){ 理由是:________________________________________ } Derive d1(3),d2(5,7);