Comment passer et retourner des objets dans les fonctions C++
Comment passer et retourner des objets dans les fonctions C++
Ce tutoriel explique comment passer des objets aux fonctions et retourner des objets depuis les fonctions en C++, avec des exemples pratiques et des bonnes pratiques.
Exemple 1 : Passage d'objets à une fonction
// Programme C++ pour calculer la moyenne des notes de deux étudiants
#include <iostream>
using namespace std;
class Student {
public:
double marks;
// Constructeur pour initialiser marks
Student(double m) : marks(m) {}
};
// Fonction qui prend des objets Student en paramètres
void calculateAverage(Student s1, Student s2) {
double average = (s1.marks + s2.marks) / 2.0;
cout << "Moyenne des notes = " << average << endl;
}
int main() {
Student student1(88.0), student2(56.0);
calculateAverage(student1, student2);
return 0;
}
Sortie
Moyenne des notes = 72
Ici, nous avons passé deux objets Student student1 et student2 à calculateAverage() par valeur. Le passage par valeur crée des copies ; si l'objet est volumineux, envisagez de passer par référence.

Exemple 2 : Retour d'un objet depuis une fonction
#include <iostream>
using namespace std;
class Student {
public:
double marks1, marks2;
};
// Fonction qui retourne un objet Student
Student createStudent() {
Student student;
student.marks1 = 96.5;
student.marks2 = 75.0;
cout << "Notes 1 = " << student.marks1 << endl;
cout << "Notes 2 = " << student.marks2 << endl;
return student; // NRVO optimise la copie
}
int main() {
Student student1;
student1 = createStudent();
return 0;
}
Sortie
Notes 1 = 96.5 Notes 2 = 75

La fonction createStudent() construit une instance de Student, affiche ses valeurs et la retourne. Dans main(), l'objet retourné est assigné à student1. Les compilateurs modernes emploient l'optimisation de valeur de retour (RVO) pour éviter les copies inutiles.
Bonnes pratiques
- Passage par référence constante : Pour les objets volumineux, utilisez
const Student&pour éviter la copie tout en garantissant l'immutabilité. - Passage par référence non-constante : Si la fonction doit modifier l'objet, utilisez
Student&. - Retour par valeur : Grâce à RVO/NRVO et aux sémantiques de mouvement (C++11), retourner par valeur est souvent optimal.
- Évitez les pointeurs bruts : Préférez les références ou les pointeurs intelligents pour la gestion de durée de vie.
Langue C
- Trois étapes essentielles de l'impression 3D expliquées
- Classes et objets C# : Fondations pour une POO robuste
- Classes et objets C++ : Guide pratique de la programmation orientée objet
- Maîtriser la gestion de mémoire en C++ : Utilisation experte de new et delete
- Maîtriser l'héritage C++ : Public, Protected et Private expliqués
- Fonctions amies et classes amies en C++ : Maîtriser le contrôle d'accès
- Programmation C : Passage d'adresses et de pointeurs aux fonctions – Guide pratique
- Les Fonctions en C++ Expliquées avec des Exemples de Code Pratiques
- Sécurisez votre chaîne d'approvisionnement : stratégies contre la cybercriminalité, les catastrophes naturelles et plus