Scott Meyers 编写的 Effective C++在第 5 章第 28 条中指出要避免将“句柄”(指针、引用或迭代器)返回到对象内部,这绝对是一个好点。
即不要这样做:
class Family
{
public:
Mother& GetMother() const;
}
因为它破坏了封装并允许更改私有对象成员。
甚至不要这样做:
class Family
{
public:
const Mother& GetMother() const;
}
因为它可能导致“悬空句柄”,这意味着您保留对已销毁对象成员的引用。
现在,我的问题是,有什么好的选择吗?想象妈妈很重!如果我现在返回 Mother 的副本而不是参考,GetMother 将成为一项相当昂贵的操作。
您如何处理此类案件?