题目导航
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中的对象成员是( )。
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 | 指针运算* |
@Power By Exercises-Manager