How are accessors and mutators different? An example and explanation would be great.
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.
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: