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

admin2021-09-05  27

问题 有如下程序:
    #include
    using namespace std;
    class pool
    {
    public:
    pool():sum(0){}
    void add(int cur)
    {
    sum+=cur:
    }
    int sum;
    };
    class derived:pool
    {
    publicl
    void add(int*atray,int cnt)
    {
    for(int i=0;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://jikaoti.com/ti/J5c0FFFM
0

最新回复(0)