有如下程序: #include<iostream> using namespace std; class pool { public: pool():sum(0){} void add(int cur) { sum+=cur; } int sum; };

admin2021-06-10  24

问题 有如下程序:
#include<iostream>
using namespace std;
class pool
{
public:
pool():sum(0){}
void add(int cur)
{
sum+=cur;
}
int sum;
};
class derived:pool
{
public:
void add(int*array,int cnt)
{
for(int i=0;i<cnt;++i)
pool::add(array);
}
};
下列叙述中,正确的是(    )。

选项 A、派生类derived实现了对基类pool的成员函数add的重载
B、派生类derived是通过公有继承方式进行继承
C、编译错误,derived类无法访问pool中的add函数
D、对函数add的调用是多态的

答案A

解析 C++中,使用class关键字定义的派生类默认具有private继承,选项B错误;由于pool类中,add()成员函数属于pool类的公有成员函数,所以对pool类和pool类对象可见,通过pool命名空间可以访问add()函数,选项C错误;多态调用必须满足两个条件:调用的成员函数必须是虚函数;必须通过基类对象的引用或指针进行函数调用,题意中add()函数是非虚成员函数,所以不存在多态调用,选项D错误;pool类中的add()成员函数与derived类中的add()成员函数,参数数量不同,属于重载函数,选项A正确。故本题答案为A选项。
转载请注明原文地址:https://kaotiyun.com/show/UMfp777K
0

随机试题
最新回复(0)