计算机二级C++考试测试卷及答案
private:
Sample():ref(0){}//②
staticintva1=5;//③
constintref;//④
};
上述程序段中,错误的语句是( )。
A.①B.②
C.③D.④
23.有如下程序:
#include
usingnamespacestd;
classPoint{
intX,Y;
public
point(intx1=0,inty1=O)tx(x1),y(y1){}
intget(){returnx+y;}
};
classCircle{
pointcenter;
intradius;
public
circle(intCX,intcy,intr):center(cx,cy),radius(r)
{}
intget(){returncenter.get()+radius;)
};
intmain(){
circlec(3,4,5);
cout< return0;
}
运行时的输出结果是( )。
A.5
B.7
C.9
D.12
24.若是对类BigNumber中重载的类型转换运算符long进行声明,下列选项中正确的是( )。
A.operatorlong()const;
B.operatorlong(BigNumber);
C.10ngoperatorlong()const;
D.10ngoperatorlong(BigNumber);
25.有如下函数模板定义:
template
T1FUN(T2n){returnn*5,0;}
若要求以int型数据9作为函数实参调用该模板,并返回一个double型数据,则该调用应表示为( )。
A.FUN(9)
B.FUN<9>
C.FUN(9)
D.FUN<9>(double)
26.下列语句都是程序运行时的第一条输出语句,其中一条语句的输出效果与其他三条语句不同,该语句是( )。
A.cout< B.cout< C.cout< D.cout< 27.下列关于析构函数的描述中,错误的是( )。
A.析构函数可以重载
B.析构函数由系统自动调用
C.每个对象的析构函数只被调用一次
D.每个类都有析构函数
28.下列关于构造函数的描述中,错误的是( )。
A.构造函数名与类名相同
B.构造函数可以有返回值
C.构造函数可以重载
D.每个类都有构造函数
29.若PAT是一个类,则程序运行时,语句“PAT(*ad){3};”调用PAT的构造函数的次数是( )。
A.0
B.1
C.2
D.3
30.有如下程序:
ClassBase{
public:
intdata;
};
ClassDerived1:publicBase{};
ClassDerived2:protectedBase{};
intmain(){
Derived1d1;
Derived2d2;
d1.data=0;//①
d2.data=0;//②
return0;
}
下列关于程序编译结果的描述中,正确的是( )。
A.①②皆无编译错误
B.①有编译错误,②无编译错误
C.①无编译错误,②有编译错误
D.①②皆有编译错误
31.有如下程序;
#include
usingnamespacestd;
clasBasel{
public:
Basel(intd){cout< -Basel(){}
};
classBase2{
public:
Base2(intd){out< ~Base2(){}
};
classDerived:publicBase1,Base2{
public:
Derived(inta,intb,intC,intd):
Basel(b),Base2(a),b1(d),b2(c){}
private:
intb1;
intb2;
};
intmain(){
Derivedd(1,2,3,4);
return0;
}
运行时的输出结果是( )。
A.1234
B.2134
C.12
D.21
32.有如下程序:
#include
usingnamespacestd;
classBase{
public:
virtualvoidfunctionl(){cout<<’0’;}
voidfunction2(){out<<’1’;}
};
classDerived:publicBase{
oublic:
voidfunctionl(){cout<<’2’;}
voidfunction2(){cout<<’3’;}
};
intmain(){
Base*p=newDerived();
p->functionl();
p->function2();
return0;
}
运行时的输出结果是( )。
A.01
B.21
C.03
D.23
33.有如下类模板定义:
template
classBigNumber{
longn;
public;
BigNumber{Ti}:n(i){}
BigNumberoperator+(BigNumberb){
returnBigNumber{n+b.n);
}
};
已知b1、b2是BigNumber的两个对象,则下列表达中踏误的是( )。
A.b1+b2
B.b1+3
C.3+b1
D.3+3
34.下列关于文件流的描述中,正确的是( )。