(1)下面是重载为非成员函数的运算符的函数原型,其中错误的是( )。
A)Fraction operator+(Fraction,Fraction);
B)Fraction operator一(Fraction);
C)Fraction&operator=(Fraction&,Fraction);
D)Fraction&operator+=(Fraction&,Fraction);
答案:C
(2)有如下程序:
int x=3:
do{
x-=2;
COU[<<X:< p>
}while(!(--X));
执行这个程序的输出结果是( )。
A)1
B)3 0
C)1—2
D)死循环
答案:C
(3)有如下程序:
﹟nclude
using namespace std;
int main()
{
int*P;
*P=9:
cout<<”The value at p:”<< *p;
return 0;
}
编译运行程序将出现的情况是( )。
A)编译时出现语法错误,不能生成可执行文件
B)运行时一定输出:l'lle value at P:9
C)运行时一定输出:llle value at P:*9
D)运行时有可能出错
答案:D
(4)if语句的语法格式可描述为:
格式l:if(<条件>)<语句>
或
格式2:if(<条件>)<语句l>
else<语句2>
关于上面的语法格式,下列表述中错误的是( )。
A)<条件>部分可以是一个if语句,例如if(if(a==0)…)…
B)<语句>部分可以是一个if语句,例如if(…)if(…)…
C)如果在<条件>前加上逻辑非运算符!并交换<语句l>和<语句2>的位置,语句功能不变
D)<语句>部分可以是一个循环语句,例如if(…)while(…)…
答案:A
(5)下列符号中,正确的c++标识符是( )。
A)enum
B)2b
C)f00一9
D)_32
答案:D
(6)下列关于c++函数的说明中,正确的是( )。
A)内联函数就是定义在另一个函数体内部的函数
B)函数体的后一条语句必须是return语句
C)标准c++要求在调用一个函数之前,必须先声明其原型
D)编译器会根据函数的返回值类型和参数表来区分函数的不同重载形式
答案:C
(7)运算符重载是对已有的运算符赋予多重含义,因此( )。
A)可以对基本类型(如int类型)的数据,重新定义“+”运算符的含义
B)可以改变一个已有运算符的优先级和操作数个数
C)只能重载c++中已经有的运算符,不能定义新运算符
D)C++中已经有的所有运算符都可以重载
答案:C
(8)下列有关内联函数的叙述中,正确的是( )。
A)内联函数在调用时发生控制转移
B)内联函数必须通过关键字inline来定义
C)内联函数是通过编译器来实现的
D)内联函数函数体的后一条语句必须是return语句
答案:C
(9)下列运算符不能重载为友元函数的是( )。
A)=()( )->
B) + - ++ --
C)> < >= <=
D)+= -= *=/=
答案:A
(10)有如下程序:
#include
using namespaee std;
int main()
{
void function(double val);
double val:
function(val);
eout<<VAL:< p>
return 0;
}
void function(double val)
{
val=3;
}
编译运行这个程序将出现的情况是( )。
A)编译出错,无法运行
B)输出:3
C)输出:3.0
D)输出一个不确定的数
答案:D
(11)下列关于成员函数特征的描述中,错误的是( )。
A)成员函数一定是内联函数
B)成员函数可以重载
C)成员函数可以设置参数的默认值
D)成员函数可以是静态的
答案:A
(12)有如下类定义:
class MyClass
{
public:
private:
______________________________________
int data;
};
若要为MyClass类重载流输入运算符“>>”,使得程序中可以“cin>>obj;”的形式改变MyClass类的
对象0bj中数据成员data的值,则横线处的声明语句应为( )。
A)friend istream& operator>>(istream&is,MyClass&a);
B)friend istream&operator>>(istream&is,MyClass a);
C)istream&operator>>(istream&is,MyClass&a);
D)istream&operator>>(istream&is,MyClass a);
答案:A
(13)由于常对象不能被更新,因此( )。
A)通过常对象只能调用它的常成员函数
B)通过常对象只能调用静态成员函数
C)常对象的成员都是常成员
D)通过常对象可以调用任何不改变对象值的成员函数
答案:A
(14)有如下类定义:
class AA
{
im a:
public:
int getRef()const{return&a;}//①
int getValue()const{return a;}//②
void set(int n)const{a=n;}//③
friend void show(AA aa)const{cout<<A;} p ④<>
};
其中四个函数的定义中正确的是( )。
A)①
B)②
C)③
D)④
答案:B
(15)下列关于this指针的描述中,正确的是( )。
A)类的成员函数都有this指针
B)类的友元函数都有this指针
C)任何与类相关的函数都有this指针
D)类的非静态成员函数都有this指针
答案:D
(16)下列关于虚函数的说明中,正确的是( )。
A)从虚基类继承的函数都是虚函数
B)虚函数不得是静态成员函数
C)只能通过指针或引用调用虚函数
D)抽象类中的成员函数都是虚函数
答案:B
(17)下列关于基类和派生类关系的叙述中,正确的是( )。
A)每个类多只能有一个直接基类
B)派生类中的成员可以访问基类中的任何成员
C)基类的构造函数必须在派生类的构造函数体中调用
D)派生类除了继承基类的成员,还可以定义新的成员
答案:D
(18)有如下类定义:
class B
{
public:void funl(){}
private:void fun2(){}
protected:void fun3(){}
};
class D:public B
j
protected:void fun4(){}
};
若obj是类D的对象,则下列语句中不违反访问控制权限的是( )。
A)obj.funl();
B)obj.fun2();
C)obj.tim3();
D)ohj.fun4();
答案:A
(19)有如下类定义:
class Foo
{
public:
Foo(int v):value(V){}//①
~Foo(){}//②
private:
Foo(){}//③
int value=0://④
};
其中存在语法错误的行是( )。
A)①
B)②
C)③
D)④
答案:D
(20)有如下类定义:
class Point
{
int xx.yy;
public:
Point():xx(0),yy(0){}
Point(int x,int Y=0):xx(X),YY(Y){}
};
若执行语句
Point a(2),b[3],幸c[4];
则Point类的构造函数被调用的次数是( )。
A)2次
B)3次
C)4次
D)5次
答案:C
二、综合应用题
使用VC++6.0打开考生文件夹下的源程序文件3.cpp,其中定义的类不完整,按要求完成下列操作,将类的定义补充完整。
(1)定义类CPoint的带有两个参数的构造函数,两个变量为x、y,都为int型,且缺省值为0。请在注释1后添加适当的语句。
(2)完成类CRectangle的构造函数,给pointl和point2赋值。请在注释2后添加适当的语句。
(3)完成类CRectangle的函数GetArea,用来计算矩形面积。请在注释3后添加适当的语句。
(4)定义CRectangle类,它拥有两个私有对象pointl和point2,类型为Point,请在注释4后添加适当的语句。
注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
试题程序:
#include(iostream.h)
#include<CMATH)< p>
classCPoint
{
public:
//********1********
{
x=i:
y=j;
}
intGetX()
{
returnX;
}
intGetY()
{
returny;
}
private:
intX,Y;
};
classCRectangle
{
public:
//********2********
{
}
intGetArea()
//********3********
intheight=point1.GetY()一point2.GetY();
return(width*height)?width*height:一width*
height;
}
private:
//********4********
CPointpoint2;
};
intmain()
{
CRectanglerect(0,0,1,1);
cout<<RECT.GETAREA()<<ENDL;< p>
return0;
}
答案:(1)应添加“CPoint(inti=0,intj=O)”。
(2)应添加“CRectangle(inttop,intleft,intright,intbottom):pointl(top,left),point2(right,bottom)”。
(3)应添加“intwidth=point1.GetX()-point2.GetX();”。