C ++继承使用派生类调用基类成员函数

时间:2015-04-29 11:19:31

标签: c++

可能是我的问题是错的。我是C ++的新手。 如果在派生类中重写该函数,是否有任何方法使用派生类对象调用基类成员函数?

例如:

class A {
public:
    void add() { cout<<"A"; }
};

class B: public A {
public:
    void add() { cout<<"B"; } 
};

int main() {
    B bObj; 
    bObj.add(); // calls member function of class B
    return 0; 
}

2 个答案:

答案 0 :(得分:1)

首先,你并没有真正重写add函数,只是隐藏了名称,因为A::add未声明为virtual

要致电A::add,请明确说明:

bObj.A::add();

答案 1 :(得分:0)

通常,B::add()存在是有原因的,您可能不应该在A::add()上调用B。不能说你不能 - 你必须先把它变成A

B bObj;
static_cast<A&>(b).add(); // calls A::add()

或明确指明它是A::add()

bObj.A::add();

来自 B内的,您必须符合通话资格:

class B: public A {
public:
    void add() { cout<<"B"; } 

    void test() {
        add();    // calls B::add
        A::add(); // calls A::add
    }
};