我接近完成了我的第一个OOP项目,来自C背景。我想知道一个与我在基类中用来打开文件的ifstream对象相关的设计问题。之后,我想使用相同的流来进行派生类的进一步操作。我只定义了这个成员作为受保护的成员,所以我可以在派生类中实现,保护打破封装(我想养成良好的习惯),我应该定义一些getter函数来返回对流对象的引用吗?由于ifstream对象不可复制,这可能是一个问题,我首先要看到......
最佳, Umut
答案 0 :(得分:1)
protected
是保留封装的理想选择,如果它与您的设计不可分割,派生类具有与基类相同的I / O功能。
封装并不意味着一切都必须是private
,这意味着给定类的每个数据或代码成员只对最小的类用户集可见,以实现类的设计目的。换句话说,不要仅仅因为这样可以使所有内容public
更容易编码。
如果要将基类和派生类的I / O函数公开给层次结构之外的代码,则只需要public
getter。顺便说一下,返回引用并不意味着任何副本。