N. F.
N. F.

Reputation: 901

What is the difference between accessor and mutator methods?

How are accessors and mutators different? An example and explanation would be great.

Upvotes: 16

Views: 53863

Answers (2)

LeopardSkinPillBoxHat
LeopardSkinPillBoxHat

Reputation: 29431

An accessor is a class method used to read data members, while a mutator is a class method used to change data members.

Here's an example:

class MyBar;

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

    private:
        MyBar mMyBar;
}

It's best practice to make data members private (as in the example above) and only access them via accessors and mutators. This is for the following reasons:

  • You know when they are accessed (and can debug this via a breakpoint).
  • The mutator can validate the input to ensure it fits within certain constraints.
  • If you need to change the internal implementation, you can do so without breaking a lot of external code -- instead you just modify the way the accessors/mutators reference the internal data.

Upvotes: 25

Duck
Duck

Reputation: 27562

class foo
{
    private:

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

Also known as getters and setters and probably a dozen other terms.

Upvotes: 4

Related Questions