有时我需要暴露一些班级成员。例如在下面的例子中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")
. 在这种情况下,除了大量的官僚代码之外,我没有看到任何好处。