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.) 多年来,我发现自己受到越来越少的保护,即使是成员的功能.如果一个类完全实现一个简单的概念,那么它的所有状态都应该通过它的公共接口来操纵.如果派生类需要“后门”潜入,那么我通常会质疑我的设计. (这不是说我从来没有使用过保护,我只是发现我需要的越来越少) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |