第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小时内删除。
发表评论