accessor和mutator方法有什么区别?

时间:2012-03-09 00:13:52

标签: c++

访问者和变异者有何不同?一个例子和解释会很棒。

2 个答案:

答案 0 :(得分:17)

访问者是用于读取数据成员的类方法,而 mutator 是用于更改<的类方法/ em>数据成员。

以下是一个例子:

class MyBar;

class Foo
{
    public:
        MyBar GetMyBar() const { return mMyBar; } // accessor
        void SetMyBar(MyBar aMyBar) { mMyBar = aMyBar; } // mutator

    private:
        MyBar mMyBar;
}

最佳做法是创建数据成员private(如上例所示),并且只能通过访问器和更改器访问它们。这是出于以下原因:

  • 您知道何时访问它们(并且可以通过断点进行调试)。
  • mutator可以验证输入以确保它符合某些约束条件。
  • 如果您需要更改内部实现,您可以在不破坏大量外部代码的情况下执行此操作 - 而只需修改访问者/ mutator引用内部数据的方式。

答案 1 :(得分:4)

class foo
{
    private:

        int a;
    public:
        int  accessA() const { return(a);}
        void mutateA(const int A) { a = A;}
}

也称为getter和setter,可能还有十几个其他术语。