访问器方法和赋值器方法之间的区别是什么

What is the difference between accessor and mutator methods?

本文关键字:方法 区别 是什么 赋值 访问 之间      更新时间:2023-10-16

访问器和赋值器有何不同?举个例子和解释就好了。

访问器是用于读取数据成员的类方法,而赋值函数则是用于更改的数据成员的一种类方法。

这里有一个例子:

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,可能还有十几个其他术语。