【发布时间】:2011-05-06 01:23:37
【问题描述】:
有时我需要公开一些班级成员。例如在下面的例子中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 时,Java 中有类似的东西。看起来,要完全遵守某些人的说法,您需要执行像 System.getInstance().getOut().println("hello world") 这样的调用。在这种情况下,除了大量的官僚代码之外,我没有看到任何好处。
【问题讨论】:
-
没有近距离投票,但如果问题的目的是陈述一个理论,然后不同意所有与该理论相反的答案,那么它可能是“主观的和有争议的”。你的理论是对是错。
-
@Steve Jessop:别那么热心,按投票排序问题,你会得到很多不准确的问题(问题不能是主观的,答案可以是)。每个答案或多或少都是主观的。原谅你的怀疑 - 我正在旅行,最近没有机会访问 stackoverflow。
-
这就是我不确定的原因。如果有人真的在为某事寻找理由,我认为这很好,即使可能没有明确的理由。如果有人不相信有任何理由,但无论如何都要问理由,我认为“通常会导致对抗和争论”。两种方式都没有造成严重伤害,但后者不是 AFAIK 网站的目的。
标签: c++ oop getter accessor mutators