1.下列关于类定义语法的描述中,错误的是( )。
编号 |
选项 |
A |
完整的函数定义代码通常放在类实现部分 |
B |
类定义代码通常分为声明和实现2部分 |
C |
定义类时需使用关键字class |
D |
类成员之间不能重名 |
2.下列关于函数成员的描述中,错误的是( )。
编号 |
选项 |
A |
函数成员访问本类中数据成员时需先定义,后访问 |
B |
函数成员的完整定义代码可以放在声明部分,此时该函数被默认为内联函数 |
C |
类中的函数成员之间可以重名,即重载函数 |
D |
函数成员的功能通常是对本类中数据成员进行处理 |
3.下列关于对象的描述中,错误的是( )。
编号 |
选项 |
A |
可以访问对象中公有数据成员的内存单元 |
B |
可以调用对象中的所有函数成员 |
C |
类可认为是一种数据类型,用类所定义的变量称为对象,也可称为是类的实例 |
D |
执行对象定义语句时,计算机将为所定义的对象分配内存空间 |
4.已定义类ABC:
class ABC
{
private: int x, y;
public:
ABC( ) { x = 0; y = 0; }
ABC(int a, int b) { x = a; y = b; }
}
执行定义对象语句:ABC obj; 则自动调用哪个构造函数?( )
编号 |
选项 |
A |
依次调用这2个构造函数 |
B |
ABC( ) |
C |
ABC(int a, int b) |
D |
不调用任何构造函数 |
5.已定义类ABC:
class ABC
{
private: int x, y;
public:
ABC( ) { x = 0; y = 0; }
ABC(int a, int b) { x = a; y = b; }
ABC(ABC &a) { x = a.x; y = a.y; }
};
执行定义对象语句:ABC obj1, obj2(obj1); 则将会自动调用哪个构造函数?( )
编号 |
选项 |
A |
ABC( ) |
B |
ABC(int a, int b) |
C |
依次调用ABC( )和ABC(ABC &a) |
D |
依次调用ABC( )和ABC(int a, int b) |
6.已定义一个圆形类Circle:
class Circle
{
private: double r;
public:
void SetR(double x) { r = x; }
double GetArea( ) { return 3.14*r*r; }
};
编写一个显示某个圆面积的函数show,下列函数定义中错误的是( )。
编号 |
选项 |
A |
void show( Circle c ) { cout << “圆面积= ” << c.GetArea() << endl; } |
B |
void show( Circle *c ) { cout << “圆面积= ” << c->GetArea() << endl; } |
C |
void show( ) { cout << “圆面积= ” << Circle.GetArea() << endl; } |
D |
void show( Circle &c ) { cout << “圆面积= ” << c.GetArea() << endl; } |
7.下列关于静态成员的描述中,错误的是( )。
编号 |
选项 |
A |
公有静态成员具有文件作用域 |
B |
静态数据成员不属于某个对象,是类的共享成员 |
C |
私有静态成员具有块作用域 |
D |
静态数据成员要在类外定义和初始化 |
8.已定义类A:
class A
{
public:
int x;
static int y;
};
int A::y = 0;
下列语句中错误的是( )。
编号 |
选项 |
A |
A a; a.x = 1; A::y = 1; |
B |
A a; a.x = 1; a.y = 1; |
C |
A::y = 1; |
D |
A.x = 1; A.y = 1; |
9.下列关于友元类的描述中,错误的是( )。
编号 |
选项 |
A |
将类B定义成类A友元类的方法是在类A中增加一条如下的声明语句: friend class B; |
B |
如果类B是类A的友元类,那么类A自动成为类B的友元类 |
C |
如果类B是类A的友元类,类C又是类B的友元类,此时C不一定是A的友元类 |
D |
如果希望类B的函数成员都是类A的友元函数,则可将类B定义成类A的友元类 |
10.C++语言中,重用已有类代码不包括下列哪种形式?( )
编号 |
选项 |
A |
使用已有类定义派生类 |
B |
使用已有类定义组合类 |
C |
拷贝已有类,通过修改源代码来定义新的类 |
D |
使用已有类定义对象 |
11.定义类A和B:
class A
{
public: int x, y;
};
class B
{
public:
A m1;
int m2;
double m3;
void fun( A a ) { ...... }
};
组合类B中的对象成员是( )。
编号 |
选项 |
A |
m1 |
B |
m2 |
C |
fun |
D |
m3 |
12.定义类A和组合类B:
class A
{
private: int x;
public: int y;
};
class B
{
public: A t;
int s;
};
使用组合类B定义对象:B obj; 下列语句中正确的是( )。
编号 |
选项 |
A |
B *p = &obj; p.t.x = 5; p.t.y = 5; p.s = 5; |
B |
B *p = &obj; p->t.y = 5; p->s = 5; |
C |
obj.t.x = 5; obj.t.y = 5; obj.s = 5; |
D |
obj.x = 5; obj.y = 5; obj.s = 5; |
13.继承基类得到新的派生类,派生类中将不包括基类的哪种成员?( )
编号 |
选项 |
A |
基类中的保护数据成员 |
B |
基类中的私有数据成员 |
C |
基类中的构造函数和析构函数 |
D |
基类中的公有数据成员 |
14.通过派生类对象obj访问其从基类继承的成员m,则m必须是( )。
编号 |
选项 |
A |
公有继承下的保护成员 |
B |
公有继承下的公有成员 |
C |
私有继承下的公有成员 |
D |
公有继承下的私有成员 |
15.为类ABC定义重载运算符“+”,下列哪种定义形式是正确的?( )
编号 |
选项 |
A |
定义为类ABC的函数成员:void operator +( ) { … } |
B |
定义为类ABC的函数成员:ABC operator +( ABC obj1, ABC obj2 ) { … } |
C |
定义为类ABC的函数成员:ABC operator +( ABC obj ) { … } |
D |
定义为类ABC的友元函数:ABC operator +( ABC obj ) { … } |
16.下列关于抽象类的描述,错误的是( )。
编号 |
选项 |
A |
不能用抽象类定义对象,即抽象类不能实例化 |
B |
抽象类的派生类一定是抽象类 |
C |
可以用抽象类定义对象指针,指向其派生类对象 |
D |
可以用抽象类定义对象引用,引用其派生类对象 |
17.下列关于输入/输出的描述中,错误的是( )。
编号 |
选项 |
A |
C++语言通过关键字cin、cout以语句的形式提供输入/输出功能 |
B |
C语言以系统函数的形式提供输入/输出功能 |
C |
C++语言以流类库的形式提供输入/输出功能 |
D |
cin、cout是流类库中预定义的流对象 |
18.打开一个二进制输出文件“test.dat”,下列语句中错误的是( )。
编号 |
选项 |
A |
ofstream fout( “test.dat”, ios::binary ); |
B |
ofstream fout; fout.open( “test.dat” ); |
C |
ofstream *p = new ofstream( “test.dat”, ios::binary ); |
D |
ofstream fout; fout.open( “test.dat”, ios::binary ); |
19.已定义如下函数模板:
template <typename T> T max( T x, T y ) { ...... }
则编译模板函数调用语句:cout << max(3.5f, 6.2f); 将自动生成下列哪个函数定义代码?( )
编号 |
选项 |
A |
double max(double x, double y) { … } |
B |
float max(float x, float y) { … } |
C |
int max(int x, int y) { … } |
D |
short max(short x, short y) { … } |
20.双向迭代器不能进行下列哪种运算?( )
编号 |
选项 |
A |
自增运算++ |
B |
下标运算[ ] |
C |
自减运算– |
D |
指针运算* |