Effective C++ - 条款28 - 不要返回指向对象内部成分的handle

这一条还是比较简单的,就是说不要返回指向对象内部成分的引用、指针等,即便这个引用可能声明为const(或指针指向了const对象),对内部成分做了保护,但仍有可能造成handle空悬(称为danling)。

为此,举了一个例子:

class GUIobject {};
const Rectangle boundingbox(const GUIobject &obj);

Guiobject *pgo;
const Point * upleft = &(boundingbox(*pgo).upperLeft()); // 注意这里

最后一行代码结束后,boundingbox()的返回值会被析构,那么upleft所指向的成员也不复存在,造成dangling.

posted @ 2022-11-20 23:48  ijpq  阅读(16)  评论(0编辑  收藏  举报