在大学里,我的导师告诉我,总是在类中使用私有变量,并具有setter和getter函数,因为它提供了更好的封装。但是什么是封装?如果我知道我的代码将仅由我自己开发,是否有任何理由这样做?使用my_obj.var代替my_obj.set_var(var)更简单!
答案 0 :(得分:0)
教室中的封装意味着要制作过度设计的2D点结构。完全是人为的,没用。通过用不好的例子讲授它,对整个概念无益。
现实世界中的封装例如std::vector
可以按您期望的方式工作,并且由于不允许您篡改其内部结构而十分安全。
简而言之:不,没有必要。这真的取决于您在做什么。
特别是,如果您的对象正在直接处理动态分配的资源,则需要封装。因此,所有正确实现的容器类型都应使用封装,以防止意外破坏它。
但是,如果您的类型只是一对整数或其他一些原始数据,则实际上没有必要。
特别是,如果实现的详细信息将来可能在以后的某个时间发生更改,则应使用getter和setter。例如。表示时间跨度的结构可以表示为seconds:minutes:hours,但也可以只是(很多)毫秒。使用getter和setter可以将其转换为秒/分钟/等。无需将其实际存储在内部。这里的操作词是内部表示形式。