Skip to content

Latest commit

 

History

History
46 lines (41 loc) · 1.43 KB

File metadata and controls

46 lines (41 loc) · 1.43 KB
title Objects Own Resources (RAII) | Microsoft Docs
ms.custom
ms.date 11/04/2016
ms.reviewer
ms.suite
ms.technology
cpp-language
ms.tgt_pltfrm
ms.topic article
dev_langs
C++
ms.assetid f86b484e-5a27-4c3b-a92a-dfaa5dd6d93a
caps.latest.revision 4
author mikeblome
ms.author mblome
manager ghogen
ms.workload
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