Item 28: Avoid returning "handles" to object internals
Concept
Returning references, pointers, or iterators to internal data violates encapsulation and can lead to dangling handles. Even returning const references doesn't prevent dangling if the object is a temporary.
Code Example
class Rectangle {
public:
// Bad: exposes internals
Point& upperLeft() const { return pData->ulhc; }
// Better but still risky with temporaries
const Point& upperLeft() const { return pData->ulhc; }
};
Things to Remember
- Avoid returning handles (references, pointers, or iterators) to object internals. It increases encapsulation, helps
constmember functions actconst, and minimizes dangling handles.