加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 06:01:00 所属栏目:百科 来源:网络整理
导读:提出这个问题,因为我觉得我的基础的成员变量将在派生类后面需要.有没有保护他们的缺点? 编辑:编辑更好地显示我的意图. 编辑:@sbi:这也是错的吗? 此类将用于其他类中的错误记录和检索.最好从它衍生或使用它的对象 – 我不知道.但是我认为getter和setter
提出这个问题,因为我觉得我的基础的成员变量将在派生类后面需要.有没有保护他们的缺点?

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

编辑:@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.)

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读