Cette page vous donne les différences entre la révision choisie et la version actuelle de la page.
pourquoi_le_raii_est_fondamental_en_c [2015/11/02 21:45] winjerome |
pourquoi_le_raii_est_fondamental_en_c [2020/11/16 18:11] (Version actuelle) gbdivers |
||
---|---|---|---|
Ligne 226: | Ligne 226: | ||
^ Fonctionnalité ^ En C ^ En C++ ^ | ^ Fonctionnalité ^ En C ^ En C++ ^ | ||
| Créer une chaîne de caractères | char* s; | std::string s; | | | Créer une chaîne de caractères | char* s; | std::string s; | | ||
- | | Créer un tableau de données | Type* v; | std::vector<Type> v; | | + | | Créer un tableau statique | Type v[N]; | std::array<Type, N> a; | |
- | | Créer un fichier | FILE* f; | std::ifstream f;/std::ofstream f; | | + | | Créer un tableau dynamique | Type* v = new[N] Type; | std::vector<Type> v; | |
+ | | Créer un fichier | FILE* f; | std::ifstream f; std::ofstream f; | | ||
| Créer un objet sur le tas | Object* o; | std::unique_ptr<Object> p; | | | Créer un objet sur le tas | Object* o; | std::unique_ptr<Object> p; | | ||
| ::: |:::| std::shared_ptr<Object> p; | | | ::: |:::| std::shared_ptr<Object> p; | | ||
Ligne 236: | Ligne 237: | ||
> **Aucun pointeur nu, aucun ''new'', aucun ''delete'' (et encore moins de ''malloc'' ou de ''free'').** | > **Aucun pointeur nu, aucun ''new'', aucun ''delete'' (et encore moins de ''malloc'' ou de ''free'').** | ||
- | (Bien sûr, comme toutes les règles, celle-ci peut être violée, mais on ne doit le faire qu'avec de bonnes raisons, en connaissance de cause et en encapsulant au maximum dans un code dédié.) | + | (Bien sûr, comme toutes les règles, celle-ci peut être transgressée, mais on ne doit le faire qu'avec de bonnes raisons, en connaissance de cause et en encapsulant au maximum dans un code dédié.) |
===== Je n'utilise pas le C++11/14, est-ce que le RAII est intéressant pour moi ? ===== | ===== Je n'utilise pas le C++11/14, est-ce que le RAII est intéressant pour moi ? ===== |