受保护的ifstream成员

时间:2010-12-02 16:23:20

标签: c++ get protected

我接近完成了我的第一个OOP项目,来自C背景。我想知道一个与我在基类中用来打开文件的ifstream对象相关的设计问题。之后,我想使用相同的流来进行派生类的进一步操作。我只定义了这个成员作为受保护的成员,所以我可以在派生类中实现,保护打破封装(我想养成良好的习惯),我应该定义一些getter函数来返回对流对象的引用吗?由于ifstream对象不可复制,这可能是一个问题,我首先要看到......

最佳, Umut

1 个答案:

答案 0 :(得分:1)

protected保留封装的理想选择,如果它与您的设计不可分割,派生类具有与基类相同的I / O功能。

封装并不意味着一切都必须是private,这意味着给定类的每个数据或代码成员只对最小的类用户集可见,以实现类的设计目的。换句话说,不要仅仅因为这样可以使所有内容public更容易编码。

如果要将基类和派生类的I / O函数公开给层次结构之外的代码,则只需要public getter。顺便说一下,返回引用并不意味着任何副本。