Salut!
J'ai lu sur plusieurs articles que les contenaires de la STL sont des capsules RAII et qu'il est important de les utiliser en c++.
Si j'ai bien compris, en gros, ça signifie que si je fait ça :
Code cpp : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 std::vector<Objet*> list = {new Objet(), new Objet(), ...}; std::vector<Objet*> list2 = list;
Les objects contenu dans les listes seront bien détruis lorsque les 2 listes (list et list2) seront détruites ?
Sinon que se passerais t'il si je fais ça ?
Code cpp : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Objet* o1 = new Objet(); { std::vector<Objet*> list = {o1, new Objet(), ...}; std::vector<Objet*> list2 = list; } //Utilisation de o1 -> crash ?
Le std::vector agit t'il comme un delete ou bien faut t'il delete tout les éléments du std::vector manuellement ?
Bon j'ai eu ma réponse ici (ce code ne crash pas)
Code cpp : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 int main() std::string* s = new std::string("Hello!"); { std::vector<std::string*> list = {s, new std::string("world")}; } std::cout<<*s<<std::endl; return 0;
Donc bon je ne comprend pas trop bien comment les contenaires de la STL delete les objets.
Partager