私人和受保护的成员

Max*_*xpm 0 c++ private class protected member

我无法理解 C++ 类中私有成员和受保护成员之间的区别。简单来说,有什么区别?

Joh*_*ing 6

protected成员可由派生类访问。 private成员则不然。

一般来说(大多数时候)成员应该是privatepublicprotected在设计良好的系统中需要成员(编辑)的情况很少见且不寻常。

编辑:

也许我应该详细解释一下为什么protected成员会成为一种代码味道。

如果派生类可以访问其他类不能访问的数据成员,则这可能表明基类和派生类耦合过于紧密。派生类可以访问基类的状态,因此基类的状态容易受到损坏。如果情况并非如此,那么通常也没有理由只创建数据成员public

其他人对此进行了更详细的讨论。

以下是斯特鲁斯特鲁普在他的文字中所说的话:

被宣布为受保护的成员比被宣布为私有的成员更容易受到滥用。特别是,声明数据成员受保护通常是一个设计错误。将大量数据放在一个公共类中供所有派生类使用会使数据容易损坏。更糟糕的是,受保护的数据(如公共数据)无法轻易重组,因为没有找到每种用途的好方法。因此,受保护的数据成为软件维护问题。

另请参阅这个问题