Métodos (Funciones miembro)
Parte de la sección Programación Orientada a Objetos del Journey de C++ de Coddy — lección 8 de 104.
Las funciones miembro definen lo que un objeto puede hacer. Tienen un tipo de retorno, un nombre y parámetros opcionales.
Método que devuelve un valor
class Calculator {
public:
int add(int a, int b) {
return a + b;
}
};Método void (sin valor de retorno)
class Printer {
public:
void printMessage(std::string msg) {
std::cout << msg << std::endl;
}
};Método que devuelve un bool
class Checker {
public:
bool isPositive(int num) {
return num > 0;
}
};Declaración en el encabezado, implementación en el código fuente
// Calculator.h
class Calculator {
public:
int add(int a, int b);
};
// Calculator.cpp
int Calculator::add(int a, int b) {
return a + b;
}El tipo de retorno va antes del nombre del método. Usa void cuando un método no devuelve nada. El operador de resolución de ámbito :: vincula las implementaciones con su clase.
Desafío
IntermedioImplementa cuatro funciones miembro para la clase StringHelper con diferentes tipos de retorno y parámetros:
getLength()— devuelveint, la longitud del textotoUpperCase()— devuelvestd::string, el texto en mayúsculascontains(std::string word)— devuelvebool, si el texto contiene la palabrarepeat(int times)— devuelvestd::string, el texto repetido con espacios
Hoja de referencia
Las funciones miembro definen lo que un objeto puede hacer. Tienen un tipo de retorno, un nombre y parámetros opcionales.
Método que devuelve un valor:
class Calculator {
public:
int add(int a, int b) {
return a + b;
}
};Método void (sin valor de retorno):
class Printer {
public:
void printMessage(std::string msg) {
std::cout << msg << std::endl;
}
};Método que devuelve bool:
class Checker {
public:
bool isPositive(int num) {
return num > 0;
}
};Declaración en el encabezado, implementación en el código fuente:
// Calculator.h
class Calculator {
public:
int add(int a, int b);
};
// Calculator.cpp
int Calculator::add(int a, int b) {
return a + b;
}El tipo de retorno va antes del nombre del método. Use void cuando un método no devuelve nada. El operador de resolución de ámbito :: vincula las implementaciones con su clase.
Pruébalo tú mismo
#include <iostream>
#include "StringHelper.h"
int main() {
std::string input;
std::getline(std::cin, input);
StringHelper helper;
helper.text = input;
std::cout << "Original: " << helper.text << std::endl;
std::cout << "Length: " << helper.getLength() << std::endl;
std::cout << "Uppercase: " << helper.toUpperCase() << std::endl;
std::cout << "Contains 'World': " << (helper.contains("World") ? "yes" : "no") << std::endl;
std::cout << "Repeated: " << helper.repeat(3) << std::endl;
return 0;
}Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Programación Orientada a Objetos
1Fundamentos de OOP
Archivos externosConstrucción y compilación en C++Archivos de cabecera y archivos fuenteNamespaces y alcanceIntroducción a OOP en C++Clases vs ObjetosEl puntero 'this'Métodos (Funciones miembro)Atributos (Miembros de datos)Conceptos básicos de Ctors y DtorsResumen - Calculadora simple4Propiedades de clase
Miembros de instancia vs. estáticosGetters y SettersFunciones miembro constPalabra clave mutableMétodos y variables estáticosFunciones y clases amigasResumen - Gestor de cuentas bancarias7Herencia
Herencia básicaNiveles de acceso en la herenciaOrden de llamada de Ctor y DtorSobrescritura de métodosFunciones virtuales y VTableHerencia múltipleHerencia virtualResumen - Jerarquía de empleados2Gestión de memoria
Memoria Stack vs HeapPunteros y referenciasMemoria dinámica (new/delete)Punteros inteligentes en C++RAII en C++Resumen - Gestor de arrays dinámicos5Encapsulamiento
Especificadores de acceso en C++Especificadores de acceso en profundidadOcultamiento de informaciónStruct vs ClassClases anidadas e internasResumen - Sistema de registros de estudiantes8Polimorfismo
Polimorfismo: Compilación vs. Tiempo de ejecuciónSobrecarga de funcionesFunciones virtuales revisadasFunciones virtuales purasClases abstractasDiseño de interfaces en C++Dynamic Casting y RTTIResumen: Calculadora de figuras11Conceptos avanzados de POO
Composición vs. HerenciaMixins mediante CRTPIdioma PimplBorrado de tiposEnum Classes y tipado fuerteManejo de excepciones en POOJerarquías de excepciones personalizadas14Patrones de diseño - Parte 2
Patrón CommandPatrón AdapterPatrón DecoratorPatrón Template MethodPatrón StatePatrón CompositeRAII como patrón3Constructores y Destructores
Constructor por defectoConstructor parametrizadoConstructor de copiaConstructor de movimientoListas de inicialización del constructorConstructores delegadosAnálisis profundo del destructorRegla de tres / cinco / ceroResumen - Clase String6Sobrecarga de operadores
Introducción a la sobrecarga de operadoresSobrecarga de operadores aritméticosSobrecarga de operadores de comparaciónOperadores de flujo (Stream)Sobrecarga del operador de asignaciónSobrecarga de los operadores [] y ()Operadores de conversión de tiposResumen - Clase Matrix9Plantillas
Plantillas de funcionesPlantillas de clasesEspecialización de plantillasPlantillas variádicasConceptos básicos de SFINAE y Type TraitsResumen - Contenedor genérico