私有变量继承

时间:2014-09-23 02:07:10

标签: c++ variables inheritance private

我对私有变量的继承方式感到困惑,当我尝试在继承的类中使用它们时,我发现错误告诉我的变量是私有的。

一个简单的例子。

让我们说:

//dog.h
class dog
{
private:
    bool fluffy;
public:
    ...
};

让我们说:

//dog.cpp
#include "dog.h"
...

现在:

//shepard.h
#include "dog.h"
class shepard: public dog
{
private:
    ...
public:
    void groom();
};

//shepard.cpp
#include "shepard.h"
void shepard::groom()
{
    fluffy = false;
}

如果我尝试使用修饰功能,我会收到如下错误:

error: 'bool dog::fluffy' is private

我做错了什么? 可选:未来设计此解决方案的最佳方式是什么?

1 个答案:

答案 0 :(得分:2)

继承最重要的规则是:

除了同一类的成员之外,永远不能从任何地方访问类的私有成员。

进一步在私人继承中:

  

基类的所有公共成员都成为派生类的私人成员&
  基类的所有受保护成员都成为派生类的私有成员

好读:
What are access specifiers? Should I inherit with private, protected or public?