C期末考试试题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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);

相关文档
最新文档