面向对象程序设计模拟试题二_第1页
面向对象程序设计模拟试题二_第2页
面向对象程序设计模拟试题二_第3页
面向对象程序设计模拟试题二_第4页
面向对象程序设计模拟试题二_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C+面向对象程序设计模拟试题二一、单项选择题(本大题共10小题,每小题2分,共20分)在每小题列出的四个备选项中,只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。1说明内联函数的关键字是( )。A. inlineB. virtualC. defineD. static2假定CAb为一个类,则执行CAb oX;语句时将自动调用该类的( ) A. 有参构造函数 B. 无参构造函数 C. 拷贝构造函数 D. 赋值重载函数 3cin是某个类的标准对象的引用,该类是( )。A. ostreamB. istreamC. stdoutD. stdin4下面的哪个保留字不能作为

2、函数的返回类型?( )A. void B. int C. new D. long5不能参与重载的运算符是( )。A. 类 B. 函数 C. 函数模板 D. 运算符6由于数据隐藏的需要,静态数据成员通常被说明为( )。A. 私有的 B. 公有的 C. 保护的 D. 不可访问的7编译时多态性使用什么获得?( )A. 重载函数 B. 继承 C. 虚函数 D. B和C 8拷贝构造函数的参数通常是( )。A. 无特殊要求B. 指向对象的指针C. 自已类对象的常引用D. 对象9C+有几种联编?( )A. 1种B. 2种C. 3种D. 4种10基类和派生类可以分别称为( )。A. “大类”和“小类”B. “

3、父类”和“子类”C. “小类”和“大类”D. “子类”和“父类”二、判断正误题(本大题共6小题,每小题2分,共12分)判断正误,在题后的括号内,正确的划上“”错误的划上“×”。1不可以定义抽象类的对象。( )2内联函数的定义必须出现在第一次调用内联函数之前。( )3模板函数与函数模板的意义完全相同。( )4只有常成员函数才可以操作常对象。( )5引用可以不初始化。( )6使用new运算符创建数组时,可以为该数组指定初始值。( )三、填空题(本大题共6小题,每小题2分,共12分)不写解答过程,将正确的答案写在每小题的空格内。错填或不填均无分。1设函数max是由函数模板实现的,并且max

4、(3.5, 5)和max(3, 5)都是正确的函数调用,则此函数模板具有( )个类型参数。2在C+中,函数重载与虚函数帮助实现了类的( )性。3由static修饰的数据成员为该类的所有对象( )。4重载函数在参数类型或参数个数上不同,但( )相同。5使用new建立的动态对象在不用时必须用( )释放所占用的空间。6重载运算符“<<”的函数名为( )。四、程序分析题(本大题共4小题,每小题5分,共20分)给出下面各程序的输出结果。1阅读下面程序,写出输出结果。#include <iostream>using namespace std;class CPositionpubl

5、ic:CPosition(int iPositionX = 0, int iPositionY = 0):m_iPositionX(iPositionX)m_iPositionY = iPositionY;int GetPositionX() constreturn m_iPositionX;int GetPositionY() constreturn m_iPositionY;void SetPositionX(int iPositionX)m_iPositionX = iPositionX;void SetPositionY(int iPositionY)m_iPositionY = iP

6、ositionY;private:int m_iPositionX;/ X坐标int m_iPositionY;/ X坐标;int main(void)CPosition oPostion1;const CPosition oPostion2(6, 8);cout << oPostion1.GetPositionX() << endl;oPostion1.SetPositionX(16);cout << oPostion1.GetPositionX() << endl;oPostion1.SetPositionY(18);cout <<

7、; oPostion1.GetPositionY() << endl;cout << oPostion2.GetPositionX() << endl;cout << oPostion2.GetPositionY() << endl;return 0;上面程序的输出结果为:2阅读下面程序,写出输出结果。#include <iostream>using namespace std;template <class Type>class CTestpublic:CTest(Type m_tArray, int iSi

8、ze):m_pArray(m_tArray)m_iSize = iSize;void Print() constfor (int i = 0; i < m_iSize; i+)cout << m_pArrayi << " "private:Type *m_pArray;int m_iSize;int main(void)int a = 1, 0, 8;double b = 1.6, 1.8;CTest<int> oTest1(a, 3);oTest1.Print();CTest<double> oTest2(b, siz

9、eof(b) / sizeof(double);oTest2.Print();cout << endl;return 0;上面程序的输出结果为:3阅读下面程序,写出输出结果。#include <iostream>using namespace std;class CGoodspublic:CGoods(int iWeight)m_iWeight = iWeight;m_iTotalWeight = m_iTotalWeight + iWeight;CGoods(const CGoods &oGood)m_iWeight = oGood.m_iWeight;m_i

10、TotalWeight = m_iTotalWeight + m_iWeight;CGoods()m_iTotalWeight = m_iTotalWeight - m_iWeight;void Print() const;static int GetTotalWeight()return m_iTotalWeight;private:int m_iWeight;static int m_iTotalWeight;int CGoods:m_iTotalWeight = 8;/ 初始化静态数据成员void CGoods:Print() constcout << this->m_

11、iWeight << " " << this->m_iTotalWeight << " "int main(void)CGoods oGood1(6);oGood1.Print();CGoods oGood2(oGood1);oGood2.Print();cout << CGoods:GetTotalWeight();cout << endl;return 0;上面程序的输出结果为:4阅读下面程序,写出输出结果。#include <iostream>using namespac

12、e std;template <class Type>class CTestpublic:CTest(Type tA = 0, Type tB = 0, Type tC = 0):m_tC(tC)m_tA = tA;m_tB = tB;void Print()cout << m_tA << endl;cout << m_tB << endl;void Print() constcout << m_tC << endl;private:Type m_tA, m_tB;const Type m_tC;int mai

13、n(void)CTest<float> oTest1;oTest1.Print();CTest<int> oTest2(1, 9, 6);oTest2.Print();const CTest<double> oTest3(0, 6, 1.8);oTest3.Print();cout << endl;return 0;上面程序的输出结果为:五、程序改错题(本大题共4小题,每小题5分,共20分)指出下面程序中的错误的行,说明错误原因,并加以改正。1下面程序中类的定义中有一处错误,请指出出错的行,说明错误原因,并加以改正。#include <io

14、stream>/1using namespace std;/2/3class CArray/4/5public:/6void CArray(int iArray, int iSize):m_pArray(iArray), m_iSize(iSize)/7/8/9/10int GetSize()/11/12return m_iSize;/13/14/16int &operator(int iIndex)/17/18return m_pArrayiIndex - 1;/19/20/21private:/22int *m_pArray;/ 指向一个数组空间/23int m_iSize;

15、/ 数组元素个数/24;/25/26/27int main(void)/28/29int s=3, 7, 2, 1, 5;/30CArray oArray(s, 5);/31oArray1 = 9;/32for (int i = 1; i <= 5; i+)/33/34cout << oArrayi << " "/35/36cout << endl;/37/38return 0;/39/402下面程序中有错误,请指出出错的行,说明错误原因,并加以改正。#include <iostream>/1using namespac

16、e std;/2/3class CTest/4/5public:/6CTest(int iA = 0, int iB = 0):m_iA(iA), m_iB(iB)/7/8/9/10void Print()/11/12cout << m_iA << "," << m_iB << endl;/13/14/15private:/16int m_iA, m_iB;/17;/18/19/20int main(void)/21/22const CTest oTest(12, 16);/23oTest.Print();/24cout &l

17、t;< endl;/25/26return 0;/27/283下面程序中类的定义中有一处错误,请指出出错的行,说明错误原因,并加以改正。#include <iostream>/1using namespace std;/2/3class CInteger/4/5public:/6CInteger(int iNum=0)/7/8m_iNum = iNum;/9/10/11int operator int()/12/13return m_iNum;/14/15/16void Print() const/17/18cout << m_iNum << endl

18、;/19/20/21private:/22int m_iNum;/23;/24/25int main(void)/26/27CInteger oCInteger(168);/28int iNum;/29iNum = oCInteger;/30cout << iNum << endl;/31/32return 0;/33/344下面程序中有一处错误,请指出出错的行,说明错误原因,并加以改正。#include <iostream>/1using namespace std;/2/3class CBase/4/5public:/6CBase(int iBase =

19、 0):m_iBase(iBase)/7/8/10/11virtual void Show() const = 0;/12/13int Get() const/14/15return m_iBase;/16/17/18private:/19int m_iBase;/20;/21/22class CDerive:public CBase/23/24public:/25CDerive(int iBase = 0, int iDerive = 0):CBase(iBase)/26/27m_iDerive = iDerive;/28/29/30void Show() const/31/32cout &

20、lt;< CBase:Get() << "," << m_iDerive << endl;/33/34/35private:/36int m_iDerive;/37;/38/39void Print(const CBase obj)/40/41obj.Show();/42/43/44int main(void)/45/46CDerive obj(10);/47Print(obj);/48return 0;/49/50六、编程题(本大题共2个小题,每小题8分,共16分)1编写一个函数模板,用于求数组中各元素之和,并编写测试程序进行测试

21、。函数模板声明如下:template <class Type>Type Sum(Type tArray, int iSize)2定义一个抽象类CShape,它有一个纯虚函数GetLength();派生出四边型类CSquare和圆类CCircle,在派生类中重载函数GetLength(),用于求图形的周长,编写测试程序进行测试。C+面向对象程序设计模拟试题二参考答案一、单项选择题(本大题共10小题,每小题2分,共20分)在每小题列出的四个备选项中,只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。1A2B3B4C5A6A7A8C9B10B二、判断正误题(

22、本大题共6小题,每小题2分,共12分)判断正误,在题后的括号内,正确的划上“”错误的划上“×”。1参考答案:2参考答案:3参考答案:×4参考答案:5参考答案:×6参考答案:×三、填空题(本大题共6小题,每小题2分,共12分)不写解答过程,将正确的答案写在每小题的空格内。错填或不填均无分。1参考答案:22参考答案:多态3参考答案:共享4参考答案:函数名5参考答案:delete6参考答案:operator<<四、程序分析题(本大题共4小题,每小题5分,共20分)给出下面各程序的输出结果。1参考答案:01618682参考答案:1 0 8 1.6 1

23、.83参考答案:6 14 6 20 204参考答案:00191.8五、程序改错题(本大题共4小题,每小题5分,共20分)指出下面程序中的错误的行,说明错误原因,并加以改正。1参考答案:出错行:第7行原因:构造函数不能有返回值类型改正:去掉void2参考答案:出错行:第11、23行原因:常对象只能调用常成员函数改正:将第11行改为:void Print() const/11或将第23行改为:CTest oTest(12, 16);/233参考答案:出错行:第12行原因:类型转换函数没有返回值类型改正:去掉返回值类型int4参考答案:出错行:第40行原因:抽象类不能用来直接作函数参数,但可使用抽象类的引用作参数。改正:将第40行改为: void Print(const CBase &obj)/40六、编程题(本大题共2个小题,每小题8分,共16分)1参考程序: #include <iostream>using namespace std;template <class Type>Type Sum(Type tArray, int iSize)Type tSum = 0;for (int i = 0; i < iSize; i+)tSum = tSum + tArray

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论