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;
}
```