引入受保护访问说明符的基本原理

ckv*_*ckv 5 c++

在C++中引入受保护的访问说明符的理由是什么?一个例子会有所帮助.

SLa*_*aks 2

protected当类需要与其继承者一起工作时,将使用访问级别。

例如,想象一个Shape可以向外界报告其面积的抽象类。

不同的形状,如三角形、正方形和圆形,有不同的描述(角度、边长、半径),并以不同的方式计算它们的面积。

该类Shape可能有一个公共getArea()方法,该方法返回保存该区域的私有变量。
设置此变量的最佳方法是调用一个由子类调用protected的方法。setArea(double)

因此,Circle会打电话setArea(PI * radius * radius)Square会打电话setArea(side * side),等等。

请注意,这不一定是一个好的设计(但它是一个很好的例子protected

  • 不一定,由派生形式决定是否值得缓存结果。 (2认同)