1、 一、单项选择题(本大题共10小题) 1. 关于面向对象的程序设计必需具备的关键要素,以下说法最正确的是( ) A. 抽象和封装 B. 抽象和多态性 C. 抽象、封装和继承性 D. 抽象、封装、继承和多态性2.在下列成对的表达式中,运算符“+”的意义不相同的一对是( ) A. 5.0+2.0和5.0+2 B. 5.0+2.0和5+2.0 C. 5.0+2.0和5+2 D. 5+2.0和5.0+2 二、填空题(本大题共10小题) 3.在已经定义了整型指针ip后,为了得到一个包括10个整数的动态数组并由ip指向这个数组,应使用语句_。ip=new int10;矚慫润厲钐瘗睞枥庑赖。4.在函数头与函
2、数体之间加_关键字可以防止覆盖函数改变数据成员的值。三、改错题(本大题共5小题) 5. 用横线标出下面main函数中的错误,说明错误原因并改正。#include using namespace std;class Base0 /定义基类Base0public:int var0;void fun0() cout Member of Base0 endl; ;class Base1: public Base0 /定义派生类Base1public:/新增外部接口int var1;class Base2: public Base0 /定义派生类Base2public:/新增外部接口int var2;c
3、lass Derived: public Base1, public Base2 /定义派生类Derived聞創沟燴鐺險爱氇谴净。public:/新增外部接口int var;void fun() cout Member of Derived endl; 残骛楼諍锩瀨濟溆塹籟。;int main() /程序主函数Derived d;/定义Derived类对象dd.var0=1;d.fun0();return 0; 6.下面的程序类B的定义中有一处错误,请用下横线标出错误并说明错误原因。 # include # include class A public:A(const char *nm)str
4、cpy(name,nm); private:char name80; ; class B:public A public:B(const char *nm):A(nm) void PrintName( )const; ; void B:PrintName( )const cout“name:”nameendl; 四、完成程序题(本大题共5小题)。7.完成下面类中的成员函数的定义。 class Point /Point 类的定义public:/外部接口Point(int xx = 0, int yy = 0) /构造函数x = xx;_;Point(Point &p);/拷贝构造函数privat
5、e:/私有数据int x, y;/成员函数的实现Point:Point(Point &p) x = p.x;_cout Calling the copy constructor endl;8.根据注释在空白处填写适当内容。 class Location private: int X,Y; public: void init(int initX,int initY); int GetX( ); int GetY( ); ; void Location:init(int initX,int initY) X=initX; Y=initY; int Location:GetX( ) reutrn X
6、; int Location:GetY( ) reutrn Y; # include void main( ) Location A1; A1.init(20,90); _ /定义一个指向A1的引用rA1 _ /用rA1在屏幕上输出对象A1的数据成员X和Y的值 五、程序分析题(本大题共5小题) 9.写出下面程序的输出结果: # include using namespace std; class FunArray int *pa; /指向一个数组空间 int size; /数组元素个数 public: FunArray(int a ,int thesize):pa(a),size(thesiz
7、e) 酽锕极額閉镇桧猪訣锥。 int Size( )return size; int& operator (int index)return paindex-1; ; void main( ) int s =3,7,2,1,5,4; FunArray ma(s,sizeof(s)/sizeof(int); ma3=9; for(int i=1;i=ma.Size( );i+) coutmai,; 10.写出下面程序的输出结果: # include using namespace std; template class Tclass T x,y; public: Tclass(T a,T b):x(a)y=b; Tclass(T a)y=(T)0,x=a; void pr( ) char c; c=(y=(T)0? + : - ); coutxc(T)0? y:-y) i endl; ; void main( ) Tclassa(10.5,-5.8); a.pr( ); Tclassb(10); b.pr( ); 六、程序编写(10分)5