访问器方法和赋值器方法之间的区别是什么
What is the difference between accessor and mutator methods?
访问器和赋值器有何不同?举个例子和解释就好了。
访问器是用于读取数据成员的类方法,而赋值函数则是用于更改的数据成员的一种类方法。
这里有一个例子:
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,可能还有十几个其他术语。
相关文章:
- std::atomic和std::condition_variable wait,notify_*方法之间的区别
- 两种访问I2C总线的方法有什么区别?
- 定义类模板构造函数的两种方法之间的区别
- CRTP:为什么获得嵌套类型和派生类的嵌套方法有区别
- 这两种方法有什么区别?
- 以下向 c++ 向量添加元素的方法有什么区别
- 类中私有静态方法和私有方法之间的区别
- 构建对象的方法之间有什么区别
- 这两种方法有什么区别
- 分配指针的方法之间有什么区别?
- 这两种初始化成员变量的方法之间有区别吗?
- C++ 中真实方法和虚拟方法之间的区别
- 两种C++分配方法有什么区别
- 超类::方法或这个>方法的区别
- 基于像素和基于帧的方法之间的区别
- 实例化数组的方法之间的区别
- QObject::connect与connect方法之间的区别
- C/C++环境下符号表与分支/跳转/虚拟方法表的区别
- 这两种输入矢量元素的方法有什么区别?哪个更有效
- 以下4种样式调用其他成员方法有什么区别?