Cómo pasar y devolver objetos en funciones de C++
Cómo pasar y devolver objetos en funciones de C++
Este tutorial explica cómo pasar objetos a funciones y devolver objetos desde funciones en C++, con ejemplos prácticos y orientación sobre las mejores prácticas.
Ejemplo 1: Pasar objetos a una función
// Programa en C++ para calcular el promedio de notas de dos estudiantes
#include <iostream>
using namespace std;
class Estudiante {
public:
double notas;
// Constructor para inicializar notas
Estudiante(double n) : notas(n) {}
};
// Función que toma objetos Estudiante como parámetros
void calcularPromedio(Estudiante e1, Estudiante e2) {
double promedio = (e1.notas + e2.notas) / 2.0;
cout << "Promedio de notas = " << promedio << endl;
}
int main() {
Estudiante estudiante1(88.0), estudiante2(56.0);
calcularPromedio(estudiante1, estudiante2);
return 0;
}
Salida
Promedio de notas = 72
Aquí pasamos dos objetos Estudiante estudiante1 y estudiante2 a calcularPromedio() por valor. Pasar por valor crea copias; si el objeto es grande, considere pasar por referencia.

Ejemplo 2: Devolver un objeto desde una función
#include <iostream>
using namespace std;
class Estudiante {
public:
double notas1, notas2;
};
// Función que devuelve un objeto Estudiante
Estudiante crearEstudiante() {
Estudiante estudiante;
estudiante.notas1 = 96.5;
estudiante.notas2 = 75.0;
cout << "Notas 1 = " << estudiante.notas1 << endl;
cout << "Notas 2 = " << estudiante.notas2 << endl;
return estudiante; // NRVO optimiza la copia
}
int main() {
Estudiante estudiante1;
estudiante1 = crearEstudiante();
return 0;
}
Salida
Notas 1 = 96.5 Notas 2 = 75

La función crearEstudiante() construye una instancia de Estudiante, imprime sus valores y la devuelve. En main(), el objeto devuelto se asigna a estudiante1. Los compiladores modernos emplean la Optimización del Valor de Retorno (RVO) para evitar copias innecesarias.
Mejores prácticas
- Para objetos grandes, pase por referencia constante (
const Estudiante&) para evitar copias. - Devuelva objetos por valor; confíe en RVO/NRVO para la eficiencia.
- Use
std::movecuando sea apropiado para transferir recursos.
Lenguaje C
- Asegure su cadena de suministro: Estrategias para contrarrestar cibercrimen, desastres naturales y más
- Tres Etapas Esenciales de la Impresión 3D Explicadas
- Clases y objetos en C#: Fundamentos para POO robusta
- Clases y Objetos en C++: Guía Práctica de Programación Orientada a Objetos
- Dominando la gestión de memoria en C++: uso experto de new y delete
- Herencia en C++: public, protected y private explicados
- Funciones y clases amigas en C++: dominando el control de acceso
- Programación en C: Pasar direcciones y punteros a funciones – Guía práctica
- Funciones en C++ Explicadas con Ejemplos de Código Prácticos
- Guía Completa de Fecha y Hora en C++
- Dominando la Sobrecarga en C++: Funciones y Operadores Explicados