C期末考试试题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、单项选择题(12题,每题5分)
1.已定义了一个类A并有语句 A* pa=new A(5); 那么以下说法正确
的是:D
2.A. 该语句会创建A类的一个对象,并将此对象的地址赋给指针pa;
3.B. 该语句会创建A类的5个对象,且它们的地址是连续的;
4.C. 当指针变量pa超出其作用域时,pa和为对象分配的空间都将
被自动释放;
5.D. 类A中一定有一个显式定义的构造函数和一个显式定义的虚析
构函数;
6.定义类A的非静态成员函数A& f(A& one)时,需有语句return exp;
则exp不能是:D
7.A.类A中类型为A的静态数据成员 B. f中用语句 A a = one;
定义的量a
8.C. one D. *this
9.在一个类中,下列哪些成员可以是多个D
10. A. 无参构造函数 B. 析构函数
11.C. 原型相同的非静态成员函数 D. 静态成员函数
12.对于通过公有继承定义的派生类,若其成员函数可以直接访问基
类的某个成员,说明该基类成员的访问权限是:D
A. 公有或私有
B. 私有
C. 保护或私有
D. 公
有或保护
13.在下列关键字中,不能用来表示继承方式的是:B
A. private
B. static
C. public
D.
protected
14.下列有关运算符重载的叙述中,正确的是:A
15. A. 运算符重载是多态的一种表现
16. B. C++中可以通过运算符重载创造新的运算符
17. C. C++中所有运算符都可以作为非成员函数重载
18.D. 重载运算符时可以改变其结合性A
19.下列关于类定义的说法中,正确的是:
20. A. 类定义中包括数据成员与函数成员的声明
21. B. 类成员的缺省访问权限是保护的
22. C. 数据成员必须被声明为私有的
23.D. 成员函数只能在类体外进行定义
24.建立一个有成员对象的派生类对象时,各构造函数体的执行顺
序为:C
25. A. 派生类成员对象类基类 B. 成员对象类基类派
生类
26.C. 基类成员对象类派生类 D. 基类派生类成员对象
类
27.C++中解决命名冲突的机制是:A
28.A. 虚基类 B. 虚函数 C. 函数重载 D. 名字空间
29.任意一个类,析构函数的个数最多是:B
A. 不限个数
B. 1
C. 2
D. 3
30.在类定义中,为说明成员的访问权限,private, protected,
public 可以出现次数为:A
A. 次数没有具体限定
B. 每种至多一次
C. public 至少一次
D. 每种至少一次
31.下面关于访问类A的私有数据成员的说法,错误的是:C
32.A. 类A的友元函数可以访问类A的私有成员。
B. 类A的友元类中的非静态成员函数可以访问类A的私有成员。
C. 类A的嵌套类中的非静态成员函数可以访问类A的私有成员。
D. 类A中的非静态成员函数可以访问类A的私有成员。
二、写出下面程序的运行结果(2题,每题10分)
1.#include <>
class A
{
public:
A( ) { cout<<"<1> A::A( ) "< virtual ~A( ) { cout<<"<2> A::~A( )"< virtual void g( ) { cout<<"<3> A::g( )"< void h( ) { cout<<"<4> A::h( )"< virtual void f( ) { g( ); h( ); } }; class B:public A public: B( ) {cout<<"<5> B::B( ) "< virtual ~B( ) {cout<<"<6> B::~B( )"< virtual void g( ) {cout<<"<7> B::g( )"< void h( ) {cout<<"<8> B::h( )"< virtual void k( ) { f( ); g( ); h( ); } }; void main( ) { B b; ( ); } 2.#include <> class A { public: A( ) {cout<<1< virtual ~A( ) {cout<<2< virtual int Add(int n) {return 0;} }; class B : public A public: B(int n):num(n) { } virtual ~B( ) {} virtual int Add(int n) {num+=n; return num;} private: int num; }; class C : public A { public: C(A& obj,int n) : a(obj), num(n) { cout<<3< virtual int Add(int n) { return (n+num); } private: A& a; int num; }; Int main ( ) { B b(100); C c1(b,1), c2(c1,2);