c ++多态性和虚函数

Fra*_*ger 5 c++ polymorphism inheritance

是否可以从B中调用虚函数foo(int)而不使用注释中的内容?

class A {
public: 

    virtual void foo ( char * ) {
    }

    virtual void foo ( int ) {
    }
};

class B : public A {
public:

    void foo ( char * ) {
    }

    //void foo ( int i ) {
    //  
    //  A::foo(i);
    //}
};

B b;
b.foo(123); // cannot convert argument 1 from 'int' to 'char *'
Run Code Online (Sandbox Code Playgroud)

Rei*_*ica 8

对的,这是可能的.这里的问题是该函数B::foo(char*) 隐藏了继承函数的名称A::foo(int),但您可以B使用using声明将其带回到范围内:

class B : public A {
public:

    void foo ( char * ) {
    }

    using A::foo;
};
Run Code Online (Sandbox Code Playgroud)