为什么c ++具有重载和名称隐藏[重复]的功能

  可能重复:   C ++:隐藏规则背后的基本原理 最近,我了解到在派生类中重新定义非虚基类成员函数会在基类中隐藏这些函数。例如
class base
{
public:
    virtual ~base() {}
    void process(int x);
    void process(double d);
    virtual base& id();
};

class derived1 : public base
{
public:
    void process();         // hides base process functions
    derived1& id();
    //using base::process;  // this will unhide both base process members
};

int main(){
derived1 d1;
    d1.id().process();
    //d1.id().process(3);
    //d1.id().process(3.5);
    //  won't compile because process() hides base::process(int)
    //  unless we uncomment using base::process; statement in class declaration.
}
这个例子表明我们可以通过“using base :: xxx”语句使基本函数取消隐藏。但我有两个问题: 为什么C ++会隐藏重载的基本函数? 如何理解语句“using base :: process;”     
已邀请:
在这个问题上讨论了隐藏规则背后的基本原理。 非正式地说,
using
是一个将名称空间导入另一个名称空间的关键字。 在您的上下文中,它只是告诉编译器取消隐藏成员(即:强制查找祖先类)。     

要回复问题请先登录注册