这样做有两个问题:
a) 降低对象的封装性。把内部结构暴露在外面。
b) 调用const函数,但是仍然可以更改对象。
有一个办法可以解决第二个问题,即返回的handles加上一个const限制,这样就可以更改返回的对象了。
另外,也会有一个新的问题——dangling handles(悬空的号码牌)。如果handles指向的指针已经释放,但是返回的handles却无法知道。
请记住:
避免返回handles(包括reference,指针,迭代器)指向对象内部。遵守这个条款可以增加封装性,帮助const成员函数的行为像个const,并将发生虚掉号码牌的可能性降至最低。