Avatar ·

Qu'est-ce que le RAII (Resource Acquisition Is Initialization) en C++ et pourquoi en a-t-on besoin ?

Bonjour, collègues ! J'apprends le C++ et j'entends constamment parler du RAII, mais je n'arrive pas à comprendre complètement ce concept. Apparemment, cela se traduit par "l'acquisition de ressource est une initialisation", mais cela semble un peu confus.\n\nJ'ai un problème concret. J'écris une petite classe pour travailler avec des fichiers. Voici mon code :\n\n```cpp\nclass FileHandler {\npublic:\n FileHandler(const char* filename) {\n file = fopen(filename, "r");\n if (!file) {\n std::cerr << "Impossible d'ouvrir le fichier" << std::endl;\n }\n }\n \n void readData() {\n // lire les données\n char buffer[100];\n fgets(buffer, 100, file);\n }\n \n ~FileHandler() {\n // ici j'oublie de fermer le fichier\n }\n \nprivate:\n FILE* file;\n};\n```\n\nLe problème est que j'oublie souvent de