title | ms.date | ms.topic | ms.assetid |
---|---|---|---|
Objects Own Resources (RAII) |
11/04/2016 |
conceptual |
f86b484e-5a27-4c3b-a92a-dfaa5dd6d93a |
Make sure that objects own resources. This principle is also known as “resource acquisition is initialization” or “RAII.”
Pass every “new” object as a constructor argument to another named object that owns it (almost always unique_ptr).
void f() {
unique_ptr<widget> p( new widget() );
my_class x( new widget() );
// ...
} // automatic destruction and deallocation for both widget objects
// automatic exception safety, as if "finally { p->dispose(); x.w.dispose(); }"
Always immediately pass any new resource to another object that owns it.
void g() {
other_class y( OpenFile() );
// ...
} // automatic closing and release for file resource
// automatic exception safety, as if "finally { y.file.dispose(); }"
Welcome Back to C++ (Modern C++)
C++ Language Reference
C++ Standard Library