c++类与对象练习题

  • 格式:doc
  • 大小:80.00 KB
  • 文档页数:17

下载文档原格式

  / 17
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.概念填空题

1.1 类定义的关键字是class。类的数据成员通常指定为私有成员。类的函数成员通常指定为公有成员,指定为公有的类成员可以在类对象所在域中的任何位置访问它们,类的私有和保护只能被该类的成员函数或友元函数访问。

1.2类的访问限定符包括public、private和protected。类成员默认的访问方式是private。访问限定符在类中无先后次序,各限定符允许 (允许/不允许)多次出现。1.3 构造函数的任务是建立对象。类中可以有多个构造函数,它们由参数区分。如果类说明中没有给出构造函数,则C++编译器会提供构造函数,该函数不完成(完成/不完成)对象初始化工作。

1.4复制构造函数的参数是对象的复制,当程序没有给出复制构造函数时,编译系统会提供默认复制构造函数,完成类对象的复制。复制构造函数被调用情况有 3 种。

1.5析构函数在对象释放时被自动调用。类中没有定义析构函数时,编译系统会提供一个默认的析构函数。该函数不完成(完成/不完成)具体对象的清理工作。

2. 简答题

2.1 为什么说类与对象的概念是客观世界的反映?

2.2 简单解释什么是面向对象程序设计的封装性。

2.3 引用作为函数参数时为什么能实现两个实参之间的数据交换?为什么对应实参不能为引用?为什么返回值为引用的函数可以作为左值?

2.4 什么是默认的构造函数?默认的构造函数可以有多少个?

2.5 复制构造函数用于哪3个方面?

2.6 为什么在友元函数的函数体访问对象成员时,必须用对象名加运算符”.”再加对象成员名?

2.7 类的静态数据成员与函数中的静态成员有何异同?

2.8 类的成员函数在什么情况下应该定义为私有的?这样做的目的是什么?

2.9 友元关系有何性质?友元关系的优点和缺点各有哪些?

3.选择题

3.1 数据封装就是将一组数据和与这组数据有关操作组装在一起,形成一个实体,这实体也就是( B )。

A.类 B.对象 C.函数体 D.数据块

3.2 类的实例化是指( B )。

A.定义类B.创建类的对象C.指明具体类D.调用类的成员

3.3下列说法中正确的是( B )。

A.类定义中只能说明函数成员的函数头,不能定义函数体

B.类中的函数成员可以在类体中定义,也可以在类体之外定义

C.类中的函数成员在类体之外定义时必须要与类声明在同一文件中

D.在类体之外定义的函数成员不能操作该类的私有数据成员

3.4有如下类定义:

class sample {

int n;

public:

sample (int i=0):n(i){ }

void setValue(int n0);

};

下列关于setValue成员函数的实现中,正确的是( B )。

A.sample::setValue(int n0){n=n0;}

B.void sample::setValue(int n0){n=n0;}

C.void setValue(int n0){n=n0;}

D.setValue(int n0){n=n0;}

3.5在下面的类定义中,错误的语句是( C )。

class sample{

public:

sample(int val); //①

~sample( ); //②

private:

int a=2.5; //③

public:

sample( ); //④

};

A.①B.②C.③D.④

3.6类的构造函数被自动调用执行的情况是在创建该类的(C)。 A.成员函数时 B.数据成员时

C.对象时 D.友元函数时

3.7(A)是析构函数的特征。

A.一个类中只能定义一个析构函数

B.析构函数名与类名不同

C.析构函数的定义只能在类体

D.析构函数可以有一个或多个参数

3.8 在下列函数原型中,可以作为类AA构造函数的是( D )。 A.void AA(int); B.int AA( );

C.AA(int) const; D.AA(int)

3.9关于成员函数特征的下述描述中,(A)是错误的。

A.成员函数一定是联函数

B.成员函数可以重载

C.成员函数可以设置参数的默认值

D.成员函数可以是静态的

3.10不属于成员函数的是(B )。

A.静态成员函数 B.友元函数

C.构造函数 D.析构函数

3.11已知类A是类B的友元,类B是类C的友元,则(d )。 A.类A一定是类C的友元

B.类C一定是类A的友元

C.类C的成员函数可以访问类B的对象的任何成员

D.类A的成员函数可以访问类B的对象的任何成员

3.12有如下类定义:

class AA{

int a;

public:

int getRef( ) const {return &a;} //①返回类型为int, return &a 为地址

int getValue( ) const {return a;} //②

void set(int n) const{a=n;} //③常函数不能修改成员

friend void show(AA aa) const {cout<

其中的四个函数定义中正确的是(B)。

A.① B.②C.③D.④

3.13有如下类定义:

class Test{

public:

Test( ){a=0;c=0;} //①常成员必须在初始化列表中初始化

int f(int a) const {this->a=a;} //②常函数不能修改成员

void h(int b) {Test::b=b;}; //③

static int g( ) {return a;} //④静态函数要通过对象访问成员private:

int a;

static int b;

const int c;

};

int Test::b=0;

在标注的行中,能被正确编译的是(C)。

A.① B.②C.③D.④

4写出程序程序执行结果。

4.1#include

using namespace std;

class Test {

public:

Test( ) { n+=2; }

~Test( ) { n-=3;}

static int getNum( ) { return n;}

private:

static int n;

};

int Test::n=1;

int main( ){

Test * p = new Test;

delete p;

cout<<”n=”<

return 0;

}

n=0