单选题
1分
有如下程序: #include < iostream> #include&n...
有如下程序:
#include < iostream>
#include <cmath>
using namespace std;
class Power{ //幂类
double base; //底数
double expo; //指数
public:
Power(double v, double p):base(v),expo(p){}
double getBase()const{ return base; }
double getExponent()const{ return expo; }
};
class Square:public Power{
public:
Square(double x):Power(x,2.0){}
};
class Cubic:public Power{
public:
Cubic(double x):Power(x,3.0){}
};
ostream & operator <<(ostream&os,const Power&p){
os<<pow(_____________________________);
return os;
}
int main(){
cout<<Square(3)<<Cubic(5);
return 0;
}
运行后的输出结果是9125,则下划线处缺失的部分是( )。
#include < iostream>
#include <cmath>
using namespace std;
class Power{ //幂类
double base; //底数
double expo; //指数
public:
Power(double v, double p):base(v),expo(p){}
double getBase()const{ return base; }
double getExponent()const{ return expo; }
};
class Square:public Power{
public:
Square(double x):Power(x,2.0){}
};
class Cubic:public Power{
public:
Cubic(double x):Power(x,3.0){}
};
ostream & operator <<(ostream&os,const Power&p){
os<<pow(_____________________________);
return os;
}
int main(){
cout<<Square(3)<<Cubic(5);
return 0;
}
运行后的输出结果是9125,则下划线处缺失的部分是( )。
参考答案: C
参考解析: 【解析】题意中,Power类是基类,包括两个数据成员:底数base、指数expo;Square类继承Power类,构造函数将参数x赋给base,将2.0赋给expo;Cubic类继承Power类,构造函数将参数x赋给base,将3.0赋给expo。
重载“<<”运算符函数中,调用了pow()函数,它接收两个参数:第一参数是底数,第二参数是指数,返回结果为两者的幂运算。
根据程序运行结果:9125,以及函数调用传入Square的参数为3,Cubic的参数为5,所以可知:首先输出3的平方,再输出5的3次方,由此推断:使用输出运算符<<调用pow()函数时,第一次接受的参数为:3,2;第二次接受的参数为5,3,由于类对象的成员默认访问权限是private,所以需要使用成员运算符获取base和expo,所以横线处缺失的代码如下:
p.getBase(),p.getExponent()。本题答案为C选项。