What is RAII?
RAII (Resource Acquisition Is Initialization) is a common pattern in C++ for writing classes that manage resources.
What does this pattern look like?
- The resource is stored as a private member of the class.
- Then, the class constructor takes ownership of the resource.
- Then, the classes public member function controls access to the resource.
- Finally, the class destructor releases the resource when it is no longer being used.
Advantages of RAII
- Obtaining access to the resource is straight forward and deterministic. Either the instance is successfully created or the resource is not usable.
- The instance will use move constructors and move assignments to correctly transfer ownership of the resource.
- You don't have to worry about the complex implementation of managing that resource through encapsulation.
- It also provides exception safety in your code.
- It is used to implement many classes in the standard library, such as strings, vectors and fstream.