条款28:避免返回 handles 指向对象内部成分
Avoid returning "handles" to object internals.
返回 handles 的问题
让成员函数返回 handles 指向对象内部成分是比较糟糕的做法:
这样做有两个不好的影响:
首先,成员变量的封装性最多只等于“返回其 reference”的函数的访问级别;
其次,如果 const 成员函数传出一个 reference,那么这个函数的调用者就可以通过这个 reference 修改那笔数据;
References、指针和迭代器统统都是 handles,而返回一个“代表对象内部数据”的 handle 会带来“较低对象封装性“的风险。
解决返回 handles 函数的影响
如果一定要让函数返回 handles,那么一定要用 const 关键字修饰:
但即使这样,它们也很有可能导致 dangling handles(空悬的号码牌)。
dangling handles 指那些指向不复存在对象的 handles。
这种情况下
pUpperLeft
指向的对象存在于栈空间中,当函数调用结束后,对象空间被回收。
Last updated
Was this helpful?