练习04-类与对象
练习04-类与对象
题量: 34 满分: 100
作答时间:04-29 19:36 至_05-30 19:36_
1.(单选题) 下列关于C++语言类的描述中错误的是( )。
- A. 类用于描述事物的属性和对事物的操作
- B. 类与类之间必须是平等的关系,而不能组成层次结构
- C. 类与类之间通过封装而具有明确的独立性
- D. 类与类之间可以通过一些方法进行通信和联络
2.(单选题) 下列关于对象的描述中,错误的是( )。
- A. 对象就是C语言中的结构变量
- B. 对象是属性和行为的封装体
- C. 对象是类的一个实例
- D. 对象是现实世界中客观存在的某种实体
3.(单选题) 类的实例化是指( )。
- A. 定义类
- B. 创建类的对象
- C. 指明具体类
- D. 调用类的成员
4.(单选题) 不可以成为类的数据成员的是( )。
- A. 本类对象
- B. 另一个类的对象
- C. 类的指针或引用
- D. 其它简单的数据类型
5.(单选题) 下列关于对象的描述中,错误的是( )。
- A. 定义对象时系统会自动进行初始化
- B. 对象成员的表示与C语言结构变量的成员表示相同
- C. 同类的所有对象占有内存字节数相同
- D. 一个类所能创建对象的个数是有限制的
6.(单选题) 类sample包含成员数据n(int),成员函数setValue的类外实现正确的是( )。
- A. sample::setValue(int n0){ n=n0; }
- B. setValue(int n0){ n=n0; }
- C. void sample::setValue(int n0){ n=n0; }
- D. void setValue(int n0){ n=n0; }
7.(单选题) 对类成员访问权限的控制,是通过设置成员的访问控制属性实现的,下列不是访问控制属性的是( )。
- A. 公有类型
- B. 私有类型
- C. 保护类型
- D. 友元类型
8.(单选题) 以下关键字不能用来声明类的访问权限的是( )。
- A. public
- B. static
- C. protected
- D. private
9.(单选题) 下列关于类定义的说法中,正确的是( )。
- A. 类定义中包括数据成员和函数成员的声明
- B. 类成员的缺省访问权限是保护的
- C. 数据成员必须被声明为私有的
- D. 成员函数只能在类体外进行定义
10.(单选题) 已知Foo类的声明为:class Foo { int bar; }; 则成员bar的访问权限是( )。
- A. 私有数据成员
- B. 公有成员函数
- C. 公有数据成员
- D. 私有成员函数
11.(单选题) 下列说法中正确的是( )。
- A. 类定义中只能说明函数成员的函数头,不能定义函数体
- B. 类中的函数成员可以在类体中定义,也可以在类体之外定义
- C. 类中的函数成员在类体之外定义时必须要与类声明在同一文件中
- D. 在类体之外定义的函数成员不能操作该类的私有数据成员
12.(单选题) 下列关于类的定义格式的描述中,错误的是( )。
- A. 类中成员有3种访问权限
- B. 定义类的关键字通常用class,也可用struct
- C. 类的定义可分说明部分和实现部分
- D. 类中成员函数都是公有的,数据成员都是私有的
13.(单选题) 若a为AA类的非静态数据成员,在AA类的一个成员函数定义中访问a时,其书写格式为( )。
- A. a()
- B. AA.a
- C. a
- D. AA::a()
14.(单选题) 若AA为一个类,a为该类的私有整型数据成员,getA()为该类的一个非静态公有成员函数,功能是返回a的值。如果x为该类的一个对象,要在类外访问x对象中a的值,正确的访问格式为( )。
- A. AA.getA()
- B. x.getA()
- C. x.a
- D. AA::a
15.(单选题) 在类的定义中,为对象分配内存,对类的数据成员初始化并执行其他内部管理操作的函数是( )。
- A. 友元函数
- B. 虚函数
- C. 构造函数
- D. 析构函数
16.(单选题) 下列关于构造函数的描述中,错误的是( )。
- A. 构造函数可以设置默认参数
- B. 构造函数在定义对象时自动执行
- C. 构造函数不可以重载
- D. 构造函数可以是内联函数
17.(单选题) 类MyA的复制构造函数是( )。
- A. MyA()
- B. MyA(MyA*)
- C. MyA(MyA&)
- D. MyA(MyA)
18.(单选题) C++语言中关于构造函数的说法正确的是( )。
- A. 构造函数的函数名不必和类名相同
- B. 构造函数只能有一个
- C. 每个类必定有构造函数
- D. 构造函数必有返回值
19.(单选题) 自由函数fun的定义如下。执行语句d=fun(a)后Demo类的复制构造函数被调用次数是( )次。
- A. 1- B. 2
- C. 3
- D. 4
20.(单选题) 对于一个类定义,下列叙述中错误的是( )。
- A. 如果没有定义复制构造函数,编译器将生成一个复制构造函数
- B. 如果没有定义默认的构造函数,编译器一定将生成一个默认的构造函数
- C. 如果没有定义构造函数,编译器将生成一个默认的构造函数和一个复制构造函数
- D. 如果已经定义了构造函数和复制构造函数,编译器不会生成任何构造函数
21.(单选题) 下列情况中,不会调用复制构造函数的是( )。
- A. 用一个对象去初始化同一类的另一个新对象时
- B. 将类的一个对象赋值给该类的另一个对象时
- C. 函数的形参是类的对象,调用函数进行形参和实参结合时
- D. 函数的返回值是类的对象,函数执行返回调用时
22.(单选题) 下列关于对象初始化的叙述中,正确的是( )。
- A. 定义对象的时候不能对对象进行初始化
- B. 定义对象之后可以显式地调用构造函数进行初始化
- C. 定义对象时将自动调用构造函数进行初始化
- D. 在一个类中必须显式地定义构造函数实现初始化
23.(单选题) 类的析构函数的作用是( )。
- A. 一般成员函数的初始化
- B. 类的初始化
- C. 对象的初始化
- D. 删除类创建的对象
24.(单选题) ( )是析构函数的特征。
- A. 一个类中只能定义一个析构函数
- B. 析构函数名与类名不同
- C. 析构函数的定义只能在类体内
- D. 析构函数可以有一个或多个参数
25.(单选题) 下列关于析构函数的描述中,错误的是( )。
- A. 析构函数的函数体都为空
- B. 析构函数是用来释放对象的
- C. 析构函数是系统自动调用的
- D. 析构函数是不能重载的
26.(单选题) 下列不是类的成员函数的是( )。
- A. 构造函数
- B. 析构函数
- C. 友元函数
- D. 复制构造函数
27.(单选题) 下列关于类成员对象构造函数调用顺序的叙述中,正确的是( )。
- A. 与它们在初始化列表中顺序相同
- B. 与它们在类中声明的顺序相同
- C. 与析构函数的调用顺序相同
- D. 顺序不确定
28.(单选题) 下面类的定义,有( )处错误。
- A. 1- B. 2
- C. 3
- D. 4
29.(单选题) 有如下类定义:
则类 MyClass 的构造函数的个数是( )- A. 1 个
- B. 2 个
- C. 3 个
- D. 4 个
30.(单选题) 下列程序的运行结果是( )。
#include<iostream>
using namespace std;
class Location{
private: int X,Y;
public:
void init(int=0,int=0);
void valueX(int val) { X=val; }
int valueX() { return X; }
void valueY(int val) { Y=val; }
int valueY() { return Y;}
};
void Location::init(int initX, int initY) { X=initX; Y=initY; }
int main(){
Location A,B;
A.init();
B.valueX(5);
cout<<A.valueX()<<A.valueY();
B.init(6,2); B.valueY(4);
cout<<B.valueX()<<B.valueY()<<endl;
}
- B. 0064
- C. 5062
- D. 0062
31.(单选题) 有如下类定义
class MyClass{
int x;
public:
MyClass():x(0),y(0){ }
int GetX(){ return x; }
void SetX(int xx){ x=xx; }
int y;
};
- A. obj.x;
- B. obj.y;
- C. obj.GetX();
- D. obj.SetX(0);
32.(单选题) 下面程序的输出结果是( )。
#include<iostream>
using namespace std;
class Test{
public:
Test(){ }
Test(const Test &t) {cout<<1;}
};
Test fun(Test &u) {
Test t=u; return t;
}
int main() {
Test x,y;
x=fun(y);
}
- B. 1
- C. 11
- D. 111
33.(单选题) 有如下两个类定义
其中有一个成员变量的定义是错误的,这个变量是( )。- A. v1
- B. v2
- C. v3
- D. v4
34.(单选题) 下面程序的运行结果为( )。
#include<iostream>
using namespace std;
class A{
int num;
public:
A(int i){ num=i; }
A(A &a) { num=a.num++; }
void print(){ cout<<num; }
};
int main(){
A a(1),b(a);
a.print(); b.print();
}
- B. 12
- C. 21
- D. 22
练习04-类与对象答案
正确答案列表:
- B
- A
- B
- A
- D
- C
- D
- B
- A
- A
- B
- D
- C
- B
- C
- C
- C
- C
- B
- B
- B
- C
- D
- A
- A
- C
- B
- B
- A
- B
- A
- C
- C
- C