一 选择题
1. 对类的构造函数和析构函数描述正确的是__[1]___ 。
A)构造函数可以重载,析构函数不能重载
B)构造函数不能重载,析构函数可以重载
C)构造函数可以重载,析构函数也可以重载
D)构造函数不能重载,析构函数也不能重载
2. 类的析构函数的作用是___[2]___。
A)一般成员函数 B)类的初始化 C)对象的初始化 D)删除对象
3. 假定MyClass为一个类,则该类的拷贝初始化构造函数的声明语句为___[3]___ 。
A)MyClass&(MyClass x); B)MyClass(MyClass x)
C)MyClass(MyClass& x); D)MyClass(MyClass *x)
4. 假定MyClass为一个类,则执行MyClass a,b(2),*p; 语句时,自动调用该类构造函数_[4]_次。
A)2 B)3 C)4 D)5构造函数可以被重载
5 下面对于友元函数描述正确的是__[5]___。
A)友元函数的实现必须在类的内部定义
B)友元函数是类的成员函数
C)友元函数破坏了类的封装性和隐藏性
D)友元函数不能访问类的私有成员
6 在C++中,数据封装要解决的问题是___[6]___。
A)数据的规范化 B)便于数据转换
C)避免数据丢失 D)防止不同模块之间数据的非法访问
7 一个类的友元函数或友元类能够通过成员操作符访问该类的____[7]____。
A)私有成员 B)保护成员 C)公用成员 D)所有成员
9 为了使类中的某个成员不能被类的对象通过成员操作符访问,则不能把该成员的访问
权限定义为___[9]____。
A)public B)protected C)private D)static
10 下面对静态数据成员的描述中,正确的是___[10]___。
A)静态数据成员可以在类体内进行初始化
B)静态数据成员不可以被类的对象调用
C)静态数据成员不能受private控制符的作用
D)静态数据成员可以直接用类名调用
11 下面对静态数据成员的描述中,正确的是__[11]___。
A)静态数据成员是类的所有对象共享的数据
B)类的每个对象都有自己的静态数据成员
C)类的不同对象有不同的静态数据成员值
D)静态数据成员不能通过类的对象调用
12 对于下面定义的类MyClass,在函数f()中将对象成员n的值修改为50的语句应该
是___[12]___。
class MyClass
{
public:
MyClass(int x) { n = x;}
void SetNum(int nl){ n =nl; }
private:
int n;
}
int f( )
{
MyClass *ptr = new MyClass(45);
_____________
}
A) MyClass(50) B) SetNum(50) C) ptr->SetNum(50) D) ptr->n = 50
13下面是类MyClass的定义,对定义中语句描述正确的是___[13]___。
class MyClass
{
public:
void MyClass(int a) { X = a; } //①
int f(int a, int b) //②
{
X=a;
Y=b;
}
int f(int a, int b, int c = O) //③
{
X=a;
Y=b;
Z=c;
}
static void g() { X=10; } //④
private:
int X, Y, Z;
};
A)语句①是类MyClass的构造函数定义
B)语句②和语句③实现类成员函数的重载
C)语句④实现对类成员变量X的更新操作
D)语句①和④都不正确, ②和③有二义。
二、 填空题
15 在C语言中,编程的单位是__①___;在C++语言中,编程的单位是__②____。
16 类是对具有共同属性和行为的一类事物的抽象描述,共同属性被描述为类中的
__①___,共同行为被描述为类中的__②____。
17 类的具体表现是通过定义_______来操作的。
18 对类中的成员函数和属性的访问是通过__①___、__②____和__③___这3
个关键字来控制的。
19 一般情况下,按照面向对象的要求,把类中的数据成员(属性)定义为__①___权
限,而把成员函数(方法)定义为__②____权限。
20) 在类定义中,数据和成员函数默认权限是_________。
21 类中构造函数有__①___个,析构函数有__②____个。
22 类中的构造函数是一个特殊的成员函数,它由类的对象__①___调用,它的作用
是__②____。
23 在定义类的对象时,C++程序将自动调用该对象的______函数初始化对象自身。
24 在撤销类的对象时,C++程序将自动调用该对象的______函数。
25 __①___运算符对指定类型对象动态分配内存并返回____②____。
26 ________运算符删除(25)题中的运算符所动态分配的内存空间。
27 假定用户没有给一个名为MyClass的类定义构造函数,则系统为其定义的默认构造
函数形式为______。
28 假定用户没有给一个名为MyClass的类定义析构函数,则系统为其定义的默认析构
函数形式为______。
29 在类中定义和实现的函数称为________。
30 非成员函数应声明为类的________才能访问这个类的private成员。
31 若要把类FriendClass定义为类MyClass的友元类,则应在类MyClass的定义中加入
语句________。
32 若要把函数void FriendFunction()定义为类MyClass的友元函数,则应在类MyClass
的定义中加入语句_______。
33下面的类中定义了一个关于星期的枚举类型,请完成下面的程序。
class MyClass
{
public:
enum Week {Sun,Mon,Tue,Wed,Thur,Fri,Sat };
Week week;
}
void fun(MyClass &my)
{
___①____= __②____; //将对象my的week赋值为所定义的枚举类型
//值为3的枚举量
}
34 在下面程序的横线处填上适当的语句,使该程序执行结果为10。
#include <iostream.h>
class MyClass
{
public:
___①____ //为x置值
___②____ //取x值
private:
int x;
};
void main()
{
MyClass my(10);
cout << my.GetNum() << endl;
}
35 完成下面的类定义。
class MyClass
{
public:
MyClass( ) { x = 0; }
___①___ int GetNum(__②____ my);
private:
int x;
};
int GetNum(__②____ my)
{
return my.x;
}
三、编写程序:
1.定义一个Point类来处理三维点points(x,y,z).该类有一默认的constructor,一copy constructor, 一negate()成员函数将point的x,y和z值各乘-1, 一norm()成员函数返回该点到原点(0,0,0)的距离,一个print()成员函数显示x,y,和z的值。
2.定义一个Person类,它的每个对象表示一个人。数据成员必须包含姓名、出生年份、死亡年份,一个默认的构造函数,一析构函数,读取数据的成员函数,一个print()成员函数显示所有数据。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论