Permalink
Fetching contributors…
Cannot retrieve contributors at this time
44 lines (36 sloc) 1.3 KB
title ms.custom ms.date ms.technology ms.topic dev_langs ms.assetid author ms.author ms.workload
Objects Own Resources (RAII) | Microsoft Docs
11/04/2016
cpp-language
conceptual
C++
f86b484e-5a27-4c3b-a92a-dfaa5dd6d93a
mikeblome
mblome
cplusplus

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++
C++ Language Reference
C++ Standard Library