(23)有如下程序:
#include
using namespace std;
class Point{
int x,y;
public:
Point(int x1=0,int y1=0):x(x1),y(y1){}
int get(){return x+y;}
};
class Circle{
Point center;
int radius;
public:
Circle(int cx,int cy,int r):center(cx,cy),raaius(r){}
int get(){return center.get()+radius;}
};
int main(){
Circle c(3,4,5);
cout< return 0;
}
运行时的输出结果是
A)5
B)7
C)9
D)12
(24)若要对类BigNumber中重载的类型转换运算符long进行声明,下列选项中正确的是
A)operator long() const;
B)operator long(BigNumber);
C)long operator long() const;
D)long operator long(BigNumber);
(25)有如下函数模板定义:
template
T1 FUN(T2 n){return n*5.0;}
若要求以int型数据9作为函数实参调用该模板,并返回一个double型数据,则该调用应表示为
A)FUN(9)
B)FUN<9>
C)FUN(9)
D)FUN<9>(double)
(26)下列语句都是程序运行时的第1条输出语句,其中一条语句的输出效果与其他三条语句不同,该语句是
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)下列描述中,错误的是
A)公有继承时基类中的公有成员在派生类中仍是公有成员
B)公有继承时基类中的保护成员在派生类中仍是保护成员
C)保护继承时基类中的公有成员在派生类中仍是公有成员
D)保护继承时基类中的保护成员在派生类中仍是保护成员
(31)生成派生类对象时,派生类构造函数调用基类构造函数的条件是
A)无需任何条件
B)基类中显式定义了构造函数
C)派生类中显式定义了构造函数
D)派生类构造函数明确调用了基类构造函数
(32)下列关于派生类和基类的描述中,正确的是
A)派生类成员函数只能访问基类的公有成员
B)派生类成员函数只能访问基类的公有和保护成员
C)派生类成员函数可以访问基类的所有成员
D)派生类对基类的默认继承方式是公有继承
(33)有如下类模板定义:
template
class BigNumber{
long n;
public:
BigNumber(T i):n(i){}
BigNumber operator+(BigNumber b){
return BigNumber(n+b.n);
}
};
己知b1、b2是BigNumber的两个对象,则下列表达式中错误的是
A)bl+b2
B)b1+3
C)3+b1
D)3+3
(34)下列关于文件流的描述中,正确的是
A)文件流只能完成针对磁盘文件的输入输出
B)建立一个文件流对象时,必须同时打开一个文件
C)若输入流要打开的文件不存在,将建立一个新文件
D)若输出流要打开的文件不存在,将建立一个新文件
(35)有如下程序:
#include
using namespace std;
class Pair{
int m,n;
public:
Pair(int j,int k):m(j),n(k){}
int get() {return m;}
int get() const {return m+n;}
};
int main(){
Pair a(3,5);
const Pair b(3,5);
cout+a.get()< return 0;
}
运行时的输出结果是
A)33
B)38
C)83
D)88