这样做有两个问题:
<!--[if !supportLists]-->a) <!--[endif]-->降低对象的封装性。把内部结构暴露在外面。
<!--[if !supportLists]-->b) <!--[endif]-->调用const函数,但是仍然可以更改对象。
有一个办法可以解决第二个问题,即返回的handles加上一个const限制,这样就可以更改返回的对象了。
另外,也会有一个新的问题——dangling handles(悬空的号码牌)。如果handles指向的指针已经释放,但是返回的handles却无法知道。
请记住:
避免返回handles(包括reference,指针,迭代器)指向对象内部。遵守这个条款可以增加封装性,帮助const成员函数的行为像个const,并将发生虚掉号码牌的可能性降至最低。
本文探讨了在软件设计中对象封装的重要性,并指出返回对象内部引用、指针等可能导致的问题,如封装性降低及悬空引用。建议采取措施增强const成员函数行为的一致性,并减少错误发生的可能性。
1254

被折叠的 条评论
为什么被折叠?



