The C++ Textbook

Part 3

Types you make

How to build a type that behaves as well as a built-in one: it copies correctly, cleans up after itself, and cannot be misused by accident.