第2章  类和对象
一、选择题
1、(  )不是构造函数的特征。
  A、构造函数的函数名与类名相同;
  B、构造函数可以重载;
  C、构造函数可以设置缺省参数;
  D、构造函数必须指定类型说明。
2、下列关于构造函数的描述中,(  )是正确的。
A、构造函数可以设置缺省参数;
B、构造函数可以被继承;
C、构造函数可以对静态数据成员进行初始化;
D、构造函数可以说明为虚函数;
3、( )是析构函数的特征。
  A、析构函数可以有一个或多个参数;
  B、析构函数名与类名不同;
  C、析构函数的定义只能在类体内;
  D、一个类中只能定义一个析构函数;
4、定义析构函数时,应该注意( )。
A、其函数名与类名完全相同;
B、函数返回类型是void类型;
C、无形参,也不可重载;
D、函数体中必须有delete语句;
5、下列静态数据成员的特性中,( )是错误的。
  A、说明静态数据成员时前边要加修饰符static;
  B、静态数据成员要在类体外进行初始化;
  C、静态数据成员不是所有对象所共用的;
  D、引用静态数据成员时,要在其名称前加<类名>和作用域运算符;
6、友元的作用是( )。
  A、提高程序的运用效率;
  B、加强类的封装性;
  C、实现数据的隐藏性;
  D、增加成员函数的种类;
7、关于成员函数特征的下列描述中,( )是错误的。
  A、成员函数一定是内联函数;
  B、成员函数可以重载;
  C、成员函数可以设置缺省参数值;
  D、成员函数可以是静态的;
8、已知:print()函数是一个类的常成员函数,它无返回值,下列表示中,( )是正确的;
  A、void print() const;
  B、const void print();
  C、void const print();
  D、void print(const);
9、在( )情况下适宜采用inline定义内联函数。
A、函数体含有循环语句;
B、函数体含有递归语句;
C、函数代码小,频繁调用;
D、函数代码多,不常调用;
10、假定AB为一个类,则执行“AB  a(4) , b[3] , * p[2] ;”语句时,自动调用该类构造函数的次数为( )。
A、 3      B、 4        C、 6         D、 9
11、通常拷贝初始化构造函数的参数是(  )。
    A、某个对象名
  B、某个对象的成员名
  C、某个对象的引用名
  D、某个对象的指针名   
12、有关类的说法不正确的是(    )
  A、类是一种用户自定义的数据类型
  B、只有类中的成员函数才能存取类中的私有数据
  C、在类中,如果不作特别说明,所有的数据均为私有类型
  D、在类中,如果不作特别说明,所有的成员函数均为公有类型
13、在声明类时,下面说法正确的的是(  )
  A、可以在类的声明中给数据成员赋初值
  B、数据成员的类型可以是register
C、public, private, protected这三种属性的成员可以按任意顺序出现
  D、没有用public, private, protected定义的成员是公有成员
14、已知:p是一个指向类A数据成员m的指针,A1是类A的一个对象。如果要给m赋值为5, (  )是正确的。
  A、A1.p=5
  B、A1->p=5
  C、A1.*p=5
  D、*A1.p=5
15、已知:类A中一个成员函数说明如下:
  void Set(A&a); 其中,A&a的含义是(  )
  A、指向类A的指针为a
  B、将a的地址值赋给变量Set
  C、a是类A的对象引用,用来作函数Set()的形参
  D、变量A与a按位相与作为函数Set()的参数
16、下列说明中const char *ptr; ptr应该是(  )
  A、指向字符型常量的指针
  B、指向字符的常量指针
  C、指向字符变量的指针
  D、指向字符串的常量指针
17、采用函数重载的目的在于:(  )
A、实现共享    B、减少空间
C、提高速度    D、使用方便,提高可读性
18、有关类和对象的说法下列不正确的是(  )
  A、对象是类的一个实例
  B、任何一个对象只能属于一个具体的类
  C、一个类只能有一个对象
  D、类与对象的关系和数据类型和变量的关系相似
19、有以下类的说明,请指出错误的地方(  )。
  Class CSample
  {  int a=2.5;                    A
      CSample();                    B
    public:
      CSample(int val);            C
      ~CSample();                  D
};
20、在类的定义形式中,数据成员、成员函数和(    )组成了类定义体
  A、成员的访问控制信息
  B、公有消息
  C、私有消息
  D、保护消息
二、填空题
1. 通常的拷贝初始化构造函数的参数是_________________
2. 在C++中函数参数的传递方式有三种,分别是:__________、__________和__________。
3. 任何类中允许有三种访问权限的数据,这三种访问权限分别是__________、__________和__________。
4. 类中数据成员和成员函数的默认类型为______________
5. 在类内部定义的__________和__________数据不能被不属于该类的成员函数来存取,定义为__________的数据,可以在类外部进行存取。
6. __________是一种特殊的成员函数,它主要用来为对象分配内存空间,对类的数据成员进行初始化并执行对象的其他内部管理操作。
7. 一个类中有__________个析构函数。
8. __________成员函数中不能直接引用类中说明的非静态成员。
9. 已知类Sample 中的一个成员函数说明如下:
void Set(Sample &a);
其中,Sample &a的含意是_________________
10.静态数据成员属于类,可以使用_______________    的方式访问静态的数据成员。
11.编译程序将this指针指向_____________。 
12.以下程序的执行结果是__________。
#include <iostream>
using namespace std;
class Sample
{ public:
    Sample () { cout << "Constructor" << endl; }
};
void fn (int i)
static Sample c;         
    cout << "i=" << i << endl;
构造函数可以被重载}
int main ()
{  fn (10) ;
      fn (20) ;
      return 0;
}
13. 以下程序的执行结果是_______________。
#include <iostream>
using namespace std;
class sample
{ private:
  int n;
  static int k;
public:
  sample(int i) { n=i; k++; };
  void disp();
};
void sample:: disp ()
{ cout<<"n=" <<n <<", k=" <<k <<endl; }
int sample:: k=0;
int main ()
{ sample a(10), b(20), c(30) ;
a.disp() ;
b.disp();
c.disp();
return 0;
}
14. 以下程序的执行结果是_______________
#include <iostream>
using namespace std;
class sample
{  int x;
public:
      void setx( int i ) { x=i; }
      int putx( ) { return x; }
};
int main ( )
{  sample *p;
sample A [3];
A[0].setx(5);
A[1].setx(6);
A[2].setx(7);
for (int j=0 ; j<3; j++ )
{  p= &A [j] ;
          cout<<p->putx( ) << " " ;
}
cout<<endl;
return 0;
}
15.以下程序的执行结果是_______________
#include <iostream>
using namespace std;
class A
{ public:
    A( )  {cout<<"Constructing A \n";}
    ~A( ) {cout<<"Destructing A \n";} 
};
class B
{ public:
      B( )  {cout<<"Constructing B \n";}
    ~B( ){cout<<"Destructing B \n";}
};
int main( )
{    A a;
    B b;
    return 0;
}
三、编程题
1. 定义一个圆类(Circle),属性为半径(radius)、圆周长和面积,操作为输入半径并计算周长、面积,输出半径、周长和面积。要求定义构造函数(以半径为参数,缺省值为0,周长和面积在构造函数中生成)和拷贝构造函数。
2. 设计一个学校在册人员类(Person)。数据成员包括:身份证号(IdPerson),姓名(Name),性别(Sex),生日(Birthday)和家庭住址(HomeAddress)。成员函数包括人员信息的录入和显示。还包括构造函数与拷贝构造函数。设计一个合适的初始值。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。