Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我即将完成我的第一个 OOP 项目,来自 C 背景。我想知道与我在基类中用于打开文件的某些 ifstream 对象相关的设计问题。之后,我想使用相同的流对派生类进行进一步的操作。我只将此成员定义为受保护的成员,因此我可以在派生类中达到它,受保护破坏了封装(我想养成良好的习惯),我应该定义一些 getter 函数来返回对流对象的引用吗?由于 ifstream 对象不可复制,这可能是一个问题,我首先看到...
最好的,乌姆特
protected如果派生类与基类具有相同的 I/O 功能是您的设计不可或缺的一部分,则它 是保留封装的理想选择。
protected
封装并不意味着一切都必须是private,它意味着给定类的每个数据或代码成员仅对最小的类用户集可见,以实现类的设计目的。换句话说,不要public仅仅因为这使编码更容易而做所有事情。
private
public
public如果您想将基类和派生类的 I/O 函数公开给层次结构之外的代码,则只需要一个getter。顺便说一句,返回引用并不意味着任何副本。