c – 使成员变量受到保护是个好习惯吗?

前端之家收集整理的这篇文章主要介绍了c – 使成员变量受到保护是个好习惯吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
提出这个问题,因为我觉得我的基础的成员变量将在派生类后面需要.有没有保护他们的缺点?

编辑:编辑更好地显示我的意图.

编辑:@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;
};

解决方法

封装是OO的主要特征之一.将数据封装在类中意味着类的用户不能破坏类的数据不变量,因为类的状态只能通过其成员函数进行操作.

如果允许派生类访问其基类的数据,则派生类需要注意不要使基类的数据的不变量无效.这会将封装从窗口中抛出,只是错误. (所以做getters and setters,BTW.)

多年来,我发现自己受到越来越少的保护,即使是成员的功能.如果一个类完全实现一个简单的概念,那么它的所有状态都应该通过它的公共接口来操纵.如果派生类需要“后门”潜入,那么我通常会质疑我的设计. (这不是说我从来没有使用过保护,我只是发现我需要的越来越少)

猜你在找的C&C++相关文章