The big five are a C++ class-design pattern: define the destructor, copy constructor, copy assignment operator, move constructor, and move assignment operator together when managing resources. Omitting part of the set can cause leaks, double ownership, expensive transfers, or unclear object state. section 2.1 section 7.6
A destructive copy
A legacy Page copy constructor deep-copies body but then deletes the original object's body and nulls its pointers. Writing Page p2 = p1 therefore behaves like an ownership transfer disguised as copying. A move constructor makes that transfer explicit and inexpensive: it takes the pointers, then neutralizes the moved-from Page.
Coordinate the special members around the class's ownership policy:
- Release existing resources before replacement and delete owned resources in the destructor. section 7.6
- Use move construction and move assignment for exclusive resource transfer, leaving moved-from objects neutralized. section 2.1

