假设需要实现 getter/setter(我也尽量避免使用它们,因为它们通常表明设计不佳)。以下两个变体中哪个变体更好,每个变体的含义是什么?
可能性(1):
class Foo;
class Bar
{
public:
const Foo& getFoo() const {return foo_;}
private:
Foo foo_;
};
或 (2):
class Foo;
class Bar
{
public:
void getFoo(Foo& foo) const {foo = foo_}
private:
Foo foo_;
};
就个人而言,我总是使用第一个变体,因为我发现它更直观。在第二个变体中,您必须在调用 getFoo 之前构造 Foo 对象,该对象将保存 getFoo 的结果,然后将 getFoo 引用传递给该对象。这个变体对我来说有违直觉,但有些人更喜欢 secodn 变体。出于什么原因,第二个变体可能优于第一个变体?