Avatar ·

Pourquoi en C++ est-il préférable de passer des objets par pointeur plutôt que par valeur ?

Bonjour à tous ! Je viens de commencer à apprendre le C++ après Java, et j'ai un problème de compréhension avec les pointeurs. En Java, quand j'écris `MyClass obj = new MyClass()`, je travaille toujours avec une référence à l'objet. Mais en C++, je peux écrire aussi bien `MyClass obj;` que `MyClass* obj = new MyClass();`. Et c'est là que je suis perdu. Supposons que j'ai une fonction qui prend un objet et fait quelque chose avec : ```cpp void processData(MyClass data) { // on modifie data data.setValue(42); } int main() { MyClass myObj; myObj.setValue(10); processData(myObj); // myObj.getValue() est toujours 10, pas 42 ! Pourquoi ? return 0; } ``` Je m'attendais à ce qu'après l'appel de `processData`, la valeur change, mais cela ne s'est pas produit. J'ai dû réécrire avec des pointeurs : ```cpp void processData(MyClass* data) { data->setValue(42); } int main() { MyClass* myObj = new MyClass(); myObj->setValue(10); processData(myObj); // Maintenant myObj->getValue() == 42 delete myObj; return 0; } ```