Resource Acquisition Is Initialization
Resource Acquisition Is Initialization, or just RAII, is a programming idiom that is used to manage the life cycle of a resource automatically by binding it to the lifetime of an object.
Through the smart use of the constructor and destructor of an object, you can achieve RAII. The former acquires the resource, while the latter takes care of realizing it. The constructor is allowed to throw an exception, when a resource cannot be acquired, while the destructor must never throw exceptions.
Typically, it is a good practice to operate on a resource via an instance of a RAII class when its usage involves open()/close(), lock()/unlock(), start()/stop(), init()/destroy(), or similar function calls.
The following is a way to open and close a file using an RAII-style mechanism.
Note
C++, like many languages, represents input/output operations as streams, where data can be written to or read from.
The constructor of the class opens the file into a provided stream...