C++语言程序设计(下) 中国农业大学 期末考试2019春

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 指针运算*
原创文章 63 获赞 23 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_33384402/article/details/105878455