Skip to content

Latest commit

 

History

History
38 lines (30 loc) · 1.17 KB

objects-own-resources-raii.md

File metadata and controls

38 lines (30 loc) · 1.17 KB
title ms.date ms.topic ms.assetid
Objects Own Resources (RAII)
11/04/2016
conceptual
f86b484e-5a27-4c3b-a92a-dfaa5dd6d93a

Objects Own Resources (RAII)

Make sure that objects own resources. This principle is also known as “resource acquisition is initialization” or “RAII.”

Example

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(); }"

See also

Welcome Back to C++ (Modern C++)
C++ Language Reference
C++ Standard Library