问这个问题,因为我觉得稍后在派生类中需要我的基础的成员变量.是否有保护它们的缺点?
编辑:编辑以更好地表明我的意图.
编辑:@sbi:这也错了吗?
此类将用于在其他类中进行错误记录和检索.从它衍生或使用它的对象是否更好 - 我不知道.但我认为getter和setter方法就是这个类的全部内容.
class ErrorLogger
{
public:
//Making this function virtual is optional
virtual void SetError(const char*, ...);
const char* GetError() const;
protected:
char* z_ErrorBuf;
};
Run Code Online (Sandbox Code Playgroud)
sbi*_*sbi 22
封装是OO的主要特征之一.在类中封装数据意味着类的用户不能破坏类的数据的不变量,因为类的状态只能通过其成员函数进行操作.
如果允许派生类访问其基类的数据,那么派生类需要注意不要使基类的数据的不变量无效.这会将封装抛出窗口,这是错误的.(所以做吸气剂和制定者,BTW.)
protected多年来,我发现自己的使用越来越少,即使对于会员职能也是如此.如果一个类完全实现了一个简单的概念,那么它的所有状态都应该可以通过它的公共接口来操作.如果派生类需要"后门"潜入,那么我通常会质疑我的设计.(这并不是说我从不使用protected.我只是发现我越来越少需要它.)
| 归档时间: |
|
| 查看次数: |
3459 次 |
| 最近记录: |