第5章类与对象
一、单项选择题
1.在C++语言中,数据封装要解决的问题是(D)。 A.数据的规范化 B.便于数据转换 C.避免数据丢失
D.防止不同模块之间数据的非法访问
2.为了使类中的某个成员不能被类的对象通过成员操作符访问,则不能把该成员的访问权限定义为(A)。 A.publicB.protectedC.privateD.static
3.如果类中的所有成员在定义时都没有使用关键字public、private或protected,则所有成员默认定义为(C)。 A.publicB.protectedC.privateD.static 4.下列关于类定义的叙述中,正确的是(D)。 A.数据成员必须被声明为私有的 B.成员函数只能在类体外进行定义 C.类成员的默认访问权限是保护的
D.类定义中包括数据成员和函数成员的声明 5.有如下类定义: class myClass { public:
myClass(int i=0):n(i){}
void setValue( int n0); int getValue(){return n;) private: int n; };
下列关于setValue成员函数的实现中,正确的是(D)。 A.setValue(int n0){n=n0;} B.void setValue(int n0){n=n0;} C.myClass∷setValue(int n0){n=n0;} D.void myClass∷setValue(int n0){n=n0;}
6.对于下面定义的类MyClass,在函数f()中将对象成员n的值修改为50的语句是(D)。 class MyClass { public:
MyClass( int x){n=x;} void SetNum( int nl){n=nl;} private: int n; } int f() {
MyClass}
A.MyClass(50)B.SetNum(50) C.ptr->n=50D.ptr->SetNum(50) 7.有如下头文件: int fl(); static int f2(); class MA { public: int f3(); static int f4(); };
在所描述的函数中,具有隐含的this指针的是(C)。 A.flB.f2C.f3D.f4
8.下列对类的构造函数和析构函数的叙述中,正确的是(A)。 A.构造函数可以重载,析构函数不能重载 B.构造函数不能重载,析构函数可以重载 C.构造函数可以重载,析构函数也可以重载 D.构造函数不能重载,析构函数也不能重载 9.有如下类定义: class MyClass{
ptr=new MyClass (45);
int value; public:
MyClass( int n): value (n) {} int gerValue()const{return value;} };
则类MyClass的构造函数的个数是(A)。 A.1个B.2个C.3个D.4个
10.假定MyClass为一个类,则执行MyClass a,b(2),自动调用该类的构造函数的次数为(A)。 A.2B.3C.4D.5 二、程序分析题
分析下列程序,写出程序的运行结果。 1.#include
A() {cout<<\;} ~A() {cout<<\~A\;} }; class B{ A
p;
public:
p;语句时,
B() {cout<<\;p=new A();} ~B() {cout<<\~B\;delete p;} } int main() { B obj; return 0; }
BA~B~A