小编hit*_*shg的帖子

关于名称隐藏和虚拟功能的困惑

提到另一个问题

考虑一下代码:

class Base {
public: 
    virtual void gogo(int a){
        printf(" Base :: gogo (int) \n");
    };

    virtual void gogo(int* a){
        printf(" Base :: gogo (int*) \n");
    };
};

class Derived : public Base{
public:
    virtual void gogo(int* a){
        printf(" Derived :: gogo (int*) \n");
    };
};

int main(){

    // 1)       
    Derived * obj = new Derived ; 
    obj->gogo(7);  // this is illegal because of name hiding


    // 2)      
    Base* obj = new Derived ;
    obj->gogo(7); // this …
Run Code Online (Sandbox Code Playgroud)

c++ virtual overriding name-hiding

6
推荐指数
2
解决办法
2587
查看次数

标签 统计

c++ ×1

name-hiding ×1

overriding ×1

virtual ×1