规避C++继承机制的“隐藏”陷阱

C++没有重载父类的概念,当子类有父类同名函数时,子类函数将隐藏掉父类函数。强制调用父类需要在调用处加上域运算符。若必须实现OOP中重载父类的功能,需要加上 using 父类名::父类同名函数。如下所示:

class A
{
public:
    virtual print(void);
    virtual print(int a);
}

class B : public A
{
public:
    using A::print; //*加这句
    virtual print(float a);
}

int main()
{
    B* b = new B();
    b->print(); //这里可用
    //若不加using A::print; 这里需要写b->A::print();
} 

 

posted @ 2018-05-09 14:51  爱文  阅读(269)  评论(0编辑  收藏  举报