Le truc, en fait, c'est qu'en C++, il n'y a pas que new, delete, malloc, calloc et free.
Il y a aussi... les smart pointer, qui évitent les delete ( parce que si le mot clé "new" implique la gestion de la mémoire, alors les dev java gèrent plus la mémoire que les dev C++ :p ).
Ajoutons à cela les collections, qui existent d'ailleurs aussi en java ( bien que mes usages épisodiques de java m'aient fait acquérir de la pitié pour ses utilisateurs quotidiens, sur ce point, mais ne changeons pas de troll... ) et il n'y a plus de problème.
D'ailleurs, l'un des derniers point qui forcent un dev C++ à gérer des raw pointers, ce sont les collections polymorphiques. Si un dev C++ utilise un pointeur en dehors, c'est qu'il estime que c'est plus simple que d'utiliser un autre mécanisme, mais un autre dev ne sera pas forcément d'accord.
Pour revenir sur les smart pointers, avant 2011, il n'y avait que auto_ptr, qui avait ses problèmes. Cependant, il m'aurait sûrement économisé pas mal de débogage si j'avais fait l'effort d'arrêter d'utiliser les pointeurs comme un dev C.
Et pour finir ce message, le C++ n'est pas le C. En C++ on ne gère pas la mémoire manuellement, on utilise la RAII. Quelques classes de bas niveau gèrent la mémoire, les autres n'y touchent jamais. On parle d'un langage qui permet de coder en bas niveau, ou en haut niveau, ou un mixe des deux. Je ne nie pas que ça ajoute de la complexité, surtout qu'on se coltine l'héritage du C, mais utiliser les possibilités du bas niveau pour dire qu'on est obligé de gérer la mémoire manuellement, c'est juste faux.
[^] # Re: la réponse est évidente
Posté par freem . En réponse au journal [Trolldi] Le langage plus approprié pour écrire des applications graphiques multiplateformes. Évalué à 2.
Le truc, en fait, c'est qu'en C++, il n'y a pas que new, delete, malloc, calloc et free.
Il y a aussi... les smart pointer, qui évitent les delete ( parce que si le mot clé "new" implique la gestion de la mémoire, alors les dev java gèrent plus la mémoire que les dev C++ :p ).
Ajoutons à cela les collections, qui existent d'ailleurs aussi en java ( bien que mes usages épisodiques de java m'aient fait acquérir de la pitié pour ses utilisateurs quotidiens, sur ce point, mais ne changeons pas de troll... ) et il n'y a plus de problème.
D'ailleurs, l'un des derniers point qui forcent un dev C++ à gérer des raw pointers, ce sont les collections polymorphiques. Si un dev C++ utilise un pointeur en dehors, c'est qu'il estime que c'est plus simple que d'utiliser un autre mécanisme, mais un autre dev ne sera pas forcément d'accord.
Pour revenir sur les smart pointers, avant 2011, il n'y avait que auto_ptr, qui avait ses problèmes. Cependant, il m'aurait sûrement économisé pas mal de débogage si j'avais fait l'effort d'arrêter d'utiliser les pointeurs comme un dev C.
Et pour finir ce message, le C++ n'est pas le C. En C++ on ne gère pas la mémoire manuellement, on utilise la RAII. Quelques classes de bas niveau gèrent la mémoire, les autres n'y touchent jamais. On parle d'un langage qui permet de coder en bas niveau, ou en haut niveau, ou un mixe des deux. Je ne nie pas que ça ajoute de la complexité, surtout qu'on se coltine l'héritage du C, mais utiliser les possibilités du bas niveau pour dire qu'on est obligé de gérer la mémoire manuellement, c'est juste faux.