【发布时间】:2011-06-05 08:16:42
【问题描述】:
假设我有一个名为myList 的容器类。此容器类有一个名为 capacity 的私有成员变量,它保存实例中值的数量。
类的用户访问capacity 可能是有益的,例如,在循环遍历每个值时知道他们何时到达终点。因此,capacity 应该是公开的。
但是,这也将允许该类的用户修改 capacity,这显然会搞砸。
myList myInstance;
myInstance.capacity = 123;
拥有一个只返回capacity 的值的公共成员函数是否会被视为不好的做法,这将是一个私有变量?例如:
unsigned int getCapacity()
{
return capacity;
}
每当capacity 的值发生变化时,如果“克隆”变量更新为capacity 的值会怎样?该类的用户将访问公共“克隆”而不是私有变量本身。
【问题讨论】:
-
“对于班级的用户来说,访问容量可能是有益的……”——我怀疑这是否真的。使用
std::vector证明暴露容量是没有用的。另一方面,getter(和setter)破坏了封装,它们几乎和公共变量一样糟糕,所以在创建它们时必须有一个很好的借口。
标签: c++ class visibility private-members