C++二级试题选择题练习(带注解,答案) 下载本文

内容发布更新时间 : 2024/6/26 20:03:46星期一 下面是文章的全部内容请认真阅读。

1. 以下运算符函数中肯定不属于类FunNumber的成员函数的是__D____。

本题考查的是类的成员函数。

选项A是重载了负号或减法运算符,由于减法运算符它具有两个操作数,而题面原型中只有一个,如果重载的是减号运算符,则必为成员函数。

选项B中由于没参数,无论是负号或减法运算符至少具有一个参数,所以它必为成员函数,同时也必定是重载了负号运算符。

选项C是必定以成函数的方式重载,因为C++规定不能对内置类的运算符进行重载,所以它不可能是友元函数(因为操作数为内置的int型),所以必为成员函数重载,且必定是重载了减法运算符。

选项D有两个参数,无论是负号或减法运算符,其操作数不超2个,所以必定为友元函数重载,且重载了减法运算符。

故本题答案为D。

2. 运算符重载是对已有的运算符赋予多重含义,因此__C____。

本题主要考查了运算符重载。

C++在重载运算符时,必须符合下面的条件:

1、不能重载内置C++数据类型(如int,double等类型)的运算符的含义; 2、不能定义C++中没有的运算符;

3、不能改变重载运算符的优先级与操作数的个数;

4、有些运算符不能被重载,如域运算符(::),条件运算符(?:)等,具体哪些运算符不能被重载与编译器有关。

3. 有如下程序:

#include using namespace std;

class Complex {

double re,im; public:

Complex (double r,double i):re(r),im(i) { } double real() const {return re;} double image() const { return im;} Complex& operator+=(Complex a) {

re+=a.re ; im+=a.im ; return *this ; } };

ostream& operator<<(ostream& s,const Complex& z) {

return s<<'('<

int main() {

Complex x(1,-2),y(2,3); cout<<(x+=y) <

执行这个程序的输出结果是_(3,1)_____。

4. 在重载一个运算符为成员函数时,其参数中没有任何参数,这说明该运算符是__A____。

A.前缀一元运算符 B. 二元运算符 C. 后缀一元运算符 D. 无操作数运算符

5. 下面程序中对一维坐标点类Point进行运算符重载 #include using namespace std; class Point{ public:

Point(int val) {x=val;}

Point& operator ++(){x++;return *this;}

Point operator ++(int) {Point old=*this;++(*this);return old;} int GetX() const {return x;} private: int x;

};

int main() {

Point a(10);

cout<<(++a).GetX(); cout<

编译和运行情况是_运行时输出 1111_____。 本题考查的是运算符重载。

对于++,--运算符有前置与后置两种方式,在以成元函数方式重载该运算符时,对于前置运算符可以以通常的一元运算的方式进行重载,对于后置运算符,则需在参数列表中加一个辅助类型的参数,以便于前置运算符区别。本题的输出结果为1111。

6. 关于虚函数,下列表述正确的是__B____。

本题考查的是虚函数的一些基本概念。

在成员函数前加上virtual修饰,即把该函数声明为虚函数。虚函数可以是另一个类的友元函数,但不得是静态成员函数。

故本题选B。

7.下列关于虚函数的说明中,正确的是_A_____。

8. 有如下程序:

#include using namespace std; class Base{ public: