【发布时间】:2012-03-09 00:13:52
【问题描述】:
访问器和修改器有何不同?一个例子和解释会很棒。
【问题讨论】:
-
Accessor(或 getter)方法允许您访问数据结构的成员,而 Mutator(或 setter)方法允许您更改数据结构的值。
标签: c++
访问器和修改器有何不同?一个例子和解释会很棒。
【问题讨论】:
标签: c++
访问器是用于读取数据成员的类方法,而mutator是用于改变 数据成员。
这是一个例子:
class MyBar;
class Foo
{
public:
MyBar GetMyBar() const { return mMyBar; } // accessor
void SetMyBar(MyBar aMyBar) { mMyBar = aMyBar; } // mutator
private:
MyBar mMyBar;
}
最佳做法是创建数据成员private(如上例所示)并且仅通过访问器和修改器访问它们。原因如下:
【讨论】:
class foo
{
private:
int a;
public:
int accessA() const { return(a);}
void mutateA(const int A) { a = A;}
}
也称为 getter 和 setter,可能还有十几个其他术语。
【讨论】:
const,只是为了完整。
const 只是 C++“反 OO”B.S. 的一部分。这与访问器和修改器的概念并不真正相关。访问器不更改状态这一事实足以使其成为访问器。 const 只是意味着我们可以在 const 限定对象或类似限定的引用上调用访问器。 const 允许不同的重载共存,但特别是在发生突变时:重载函数不是抽象访问器。