【发布时间】:2018-10-29 12:47:30
【问题描述】:
我意识到提供一个返回指向私有方法的指针的方法会破坏封装,并将该字段公开给使用该类的任何人。但是,假设如下:
你有一个类调用另一个类的方法(它需要一个指向某个私有字段的指针),并且私有成员的地址作为参数传递给这个方法。
据我所知,只要私有成员的地址仅以由类的开发人员控制的方式公开,这不会破坏封装(即开发人员确切知道它将如何使用) .当然,被调用的方法可以(假设你没有写)暴露私有成员,但是我们需要看那么远吗?我已经看过无数次了,所以我猜这不是糟糕的设计实践的结果?
编写带有指向其他类的私有成员的指针并修改它们的方法是不好的做法吗?每个班级应该只“照顾自己”吗?
【问题讨论】:
-
答案将包含主观意见,因为对于是否将指向成员的指针公开“破坏封装”(不完全是一个精确的术语)有不同的看法。如果一个类有一个返回指向私有数据指针的公共成员函数,则隐含假设调用者不会滥用它。如果调用者是不可信的,那么最好不要提供这样的功能。如果一个成员函数将一个成员的地址传递给另一个函数,那么就会保持封装 - 封装并不是要防止其自己的成员函数故意采取行动。