有时我需要暴露一些班级成员。例如在下面的例子中class Mechanic可能需要直接访问Engine组件。我读过很多次,由于几个原因,所有字段都应该由 mutator(访问器)方法访问。但是在提供非常量引用 getter 时是否有任何优势:
class Car
{
public:
Engine & engine()
{
return m_engine;
}
//as a consequence you will also need to provide const version
const Engine & engine() const
{
return m_engine;
}
private:
Engine m_engine;
}
简单地将引擎组件公开:
class Car
{
public:
Engine engine;
}
如果您不喜欢此示例,也可以替换public为。protected在现实生活中,当涉及到System.in或System.out. 看起来,要完全遵守某些人的说法,您需要执行类似System.getInstance().getOut().println("hello world"). 在这种情况下,除了大量的官僚代码之外,我没有看到任何好处。