当我们想私下继承基础 class 时,为什么要公开名称?

why name publicizing is there when we want to inherit the base class privately?

一般来说,我们希望使用私有继承来隐藏基类的实现细节class。如果这是真的,

1) 为什么又出现了名称宣传功能?只是为了语言的完整性还是有实际用途?

2) 尽管我公布了基本 class 函数名称,派生的 class 仍然可以声明另一个具有相同名称的函数。请考虑以下代码。

#include "iostream"
using namespace std;

class Base {
  public:
    int zoo;
    Base() {zoo =5;}
    int sleep() const {return 3;}
};

class Derived : Base { // Private inheritance
  public:
    using Base::zoo;
    using Base::sleep;
    int sleep() const { return 4.0; }
};

int main() {
    Derived der;
    der.sleep();
    cout<<" zoo is : "<<der.zoo<<endl;
    cout<<" Sleep is : "<<der.sleep()<<endl;
 }

在上面的代码片段中,即使我们公开了名称,我们仍然可以在派生class中声明名称,并且我们可以访问基class版本的成员变量。如何管理内存?

谢谢。

http://en.cppreference.com/w/cpp/language/using_declaration

If the derived class already has a member with the same name, parameter list, and qualifications, the derived class member hides or overrides (doesn't conflict with) the member that is introduced from the base class.

link 有具体的例子说明你在做什么,重复了我上面引用的内容以及派生成员如何简单地隐藏基本成员。