单项选择题(在每小题的四个备选答案中

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、单项选择题(在每小题的四个备选答案中,选出一个正确的答案, 并将其号码填在题干后的括号内。每小题 1 分,共 20 分)
1. 面向对象程序设计优于传统的结构化程序设计之处主要表现在,它有希望
工程的两个主要问题:软件复杂性控制和________A。
A.软件生产率的提高
B.精化已有的代码
C.共享代码
void csample::display(){cout<<”i=”<<i<<”,k=”<<k<<endl;}
int csample::k=0;
main()
{ csample a,b;
a.display();
b.display();
}
i=0,k=2
以上程序的执行结果是________i=0,k=2。
date date::operator+(int day) { date dt=*this;
day+=dt.da; while(day>dys[dt.mo-1]) { day-=dys[dt.mo-1];
if(++dt.mo==13){dt.mo=1;dt.yr++;} } dt.da=day; return dt; }
D.指向字符串的常量指针
16. C++中的类有两种用法:一种是类的实例化,即生成类的对象,并参与系
统的运行;另一种是通过________C,派生出新的类。
A.复用
B.单继承
C.继承
D.多继承
17. 对基类和派生类的关系描述中,________B 是错误的。
A.派生类是基类的具体化
B.派生类是基类的子集
main() { date d1(2,10,2001),d2;
d2=d1+20; d2.disp( ); } 以上程序的执行结果是________3/2/2001。
六、编程题(每小题 15 分,共 30 分)
1. 用模板设计一个队列类,包含判队、读队、入队和出队功能,要求用成员 函数重载“()”实现判队功能,用友元函数重载“--”实现出队功能。
C.派生类是基类定义的延续
D.派生类是基类的组合
18. 说明静态成员函数的关键字为________A。
A.static
B.virtual
C.friend
D.void
19. 下列运算符中,________C 运算符在 C++中不能重载。
A.&&
B.[]
C.::
D.new
20. cin 是________B 类的标准对象的引用。
d.f1();
(1,2)
}
5,6
以上程序的执行结果是________(6,9)。
2. #include <iostream.h> class csample { private: int i ; static int k; public:
csample();
void display();
};
csample::csample(){i=0;k++;}
D.obj1@
12. 通常拷贝构造函数的参数是________C。
A.某个对象名
B.某个对象的成员名
C.某个对象的引用名
D.某个对象的指针名
13. 已知 f1(int)是类 A 的公有成员函数,p 是指向成员函数 f1( )的指针,采
用________B 是正确的。
A.p=f1
B.p=A::f1
C.p=A::f1( )
2. 利用基类、派生类和虚函数的概念编写一个程序计算三角形、矩形和圆形 的面积。
下面的函数调用合法的有________ABD。
A.f( )
B.f(5)
C.f( ,6)
D.f(5,6,7)
E.f(5, ,7,8)
2. 不能用友元函数重载的运算符有________ABDE。
A.=
B.[ ]
C.+
D.->
E.( )
3. 对二元运算符进行重载后,正确的显式调用方式有________BD。 A.a.operator@( ) B.operator@(a,b) C.a@b D.a.operator@(b) E.operator@(a)
A.public
B.private
C.protected
D.friend
8. ________D 无返回类型,但又有 return 语句。
A.虚函数
B.内联函数
C.友元函数
D.类型转换函数
9. 一个________B 允许用户为类定义一种模式,使得类中的某些数据成员及某
些成员函数的返回值能取任意类型。
1. 多态性 2. 类 3. 析构函数 4. 内联函数
四、判断分析题(判断正误,将正确的划上“√”,错误的划上“╳”, 并简述理由。每小题 3 分,共 12 分)
1. 一个无名类的多个对象都具有各自的地址。error
2. 引用类型和指针类型作为函数的形式参数时,对调用函数的实际参数的要 求是一样的,均是地址。error
void move(int x,int y){a+=x;b+=y;}
void show(){cout<<”(”<<a<<”,”<<b<<”)”<<endl;}
private:
int a,b;
};
class B:private A
{ public:
B(int i,int j,int k,int l):A(i,j){x=k,y=l;}
3. #include <iostream.h> class sample { int x; public: void setx(int i){x=i;} int putx(){return x;} }; main() { sample *p; sample A[3]; A[0].setx(5); A[1].setx(6); A[2].setx(7); p=&A[0]; for(int j=0;j<3;j++)cout<<p++->putx()<<” ”; cout<<endl; }
D.p=f1( )
14. 用 struct 定义类,若它的成员缺省段约束符的说明,其成员是________B 的
成员。
A.私有段
B.公有段
C.特殊段
D.保护段
15. 在说明:const char *ptr;中,ptr 应该是________C。
A.指向字符常量的指针
B.指向字符的常量指针
C.指向字符串常量的指针
Hale Waihona Puke Baidu
C.ch=’\08’;
D.ch=”\”;
5. 采用函数重载的目的在于________D。
A.实现共享
B.减少空间
C.提高速度
D.使用方便,提高可读性
6. ________C 的功能是对对象进行初始化。
A.析构函数
B.数据成员
C.构造函数
D.静态成员函数
7. 在下列关键字中,用以说明类中私有成员的是________B。
D.编写可重用代码
2. ________A 不是面向对象系统所包含的要素。
A.重载
B.对象
C.类
D.继承
3. 下列符号中,________C 不可作为分隔符。
A.,
B.:
C.?
D.;
4. 已知 ch 是字符型变量,下面正确的赋值语句是________C。
A.ch=’123’;
B.ch=’\xff’;
以上程序的执行结果是________5,6,7。
4. #include <iostream.h> static int dys[ ]={31,28,31,30,31,30,31,31,30,31,30,31}; class date { int mo,da,yr; public: date(int m,int d,int y){mo=m,da=d;yr=y;} date(){} void disp(){cout<<mo<<”/”<<da<<”/”<<yr<<endl;} date operator+(int day); };
A.ostream
B.istream
C.stdin
D.stdout
二、多项选择题(在每小题的五个备选答案中,选出若干个正确的答 案,并将其号码分别填在题干后的括号内;多选、少选、错选均无分。 每小题 2 分,共 10 分)
1. 若给出函数声明:
void f(int a=1,int b=2,int c=3,int d=4);
3. 在任何派生情况下,指向基类的指针均可指向派生类的对象。error
4. 对象数组在创建时要求构造函数不能有任何参数。error
五、读程序、得结果(每小题 5 分,共 20 分)
1. #include <iostream.h>
class A
{ public:
A(int i,int j){a=i;b=j;}
A.函数模板
B.类模板
C.模板函数
D.模板类
10. 利用友元函数重载“>>”运算符,第 2 个参数必须为________C。
A.指针
B.对象
C.引用
D.无值
11. 用成员函数重载一元运算符@,则显式调用方式为________C。
A.obj1.operator@(obj2)
B.@obj1
C.obj1.operator@( )
4. 关于构造函数,正确的描述有________BD。
A.可以是虚函数 B.可以有参数 C.可以被继承
D.可以重载
E.可以显式调用
5. 关于拷贝构造函数,正确的描述有________ABC。
A.是函数
B.是成员函数 C.是构造函数
D.是友元函数 E.是静态函数
三、名词解释(每小题 2 分,共 8 分)
void show(){cout<<x<<”,”<<y<<endl;}
void fun(){move(3,5);}
void f1(){A::show();}
private:
int x,y;
};
main()
{ A e(1,2);
e.show();
B d(3,4,5,6);
d.fun();
d.show();
相关文档
最新文档