Funciones Miembro
Introducción a las Funciones Miembro
Las funciones miembro son métodos definidos dentro de una clase que operan sobre los miembros de datos de la clase. Encapsulan el comportamiento de los objetos y proporcionan una forma de interactuar con los datos de la clase.
Tipos de Funciones Miembro
graph TD
A[Funciones Miembro] --> B[Métodos Regulares]
A --> C[Constructores]
A --> D[Destructores]
A --> E[Métodos Inline]
A --> F[Métodos Const]
Métodos Regulares
Los métodos regulares realizan operaciones y manipulan los datos de la clase:
class Calculator {
public:
int add(int a, int b) {
return a + b;
}
int subtract(int a, int b) {
return a - b;
}
};
Constructores
Los constructores inicializan el estado del objeto cuando se crea un objeto:
class Student {
private:
string name;
int age;
public:
// Constructor por defecto
Student() {
name = "Desconocido";
age = 0;
}
// Constructor parametrizado
Student(string n, int a) {
name = n;
age = a;
}
};
Destructores
Los destructores limpian los recursos cuando se destruye un objeto:
class DatabaseConnection {
public:
~DatabaseConnection() {
// Cerrar la conexión a la base de datos
closeConnection();
}
private:
void closeConnection() {
// Lógica de limpieza
}
};
Tipos y Características de los Métodos
| Tipo de Método |
Descripción |
Características Clave |
| Métodos Inline |
Definidos dentro de la clase |
Optimización del compilador |
| Métodos Const |
No pueden modificar el estado del objeto |
Operaciones de solo lectura |
| Métodos Estáticos |
Pertenecen a la clase, no al objeto |
Compartidos entre instancias |
Métodos Inline
Los métodos inline se expanden en el sitio de llamada para mejorar el rendimiento:
class Point {
public:
// Método inline
inline double getDistance() {
return sqrt(x*x + y*y);
}
private:
double x, y;
};
Métodos Const
Los métodos const garantizan que no modificarán el estado del objeto:
class Rectangle {
public:
// Método Const
double getArea() const {
return width * height;
}
private:
double width;
double height;
};
Métodos Estáticos
Los métodos estáticos pertenecen a la clase, no a instancias específicas:
class MathUtility {
public:
// Método estático
static int square(int x) {
return x * x;
}
// Método estático para contar instancias
static int getInstanceCount() {
return instanceCount;
}
private:
static int instanceCount;
};
Técnicas Avanzadas de Funciones Miembro
- Sobrecarga de Métodos
- Argumentos por Defecto
- Parámetros de Referencia e Indicadores
Ejemplo de Sobrecarga de Métodos
class Print {
public:
void display(int x) {
cout << "Entero: " << x << endl;
}
void display(string s) {
cout << "Cadena: " << s << endl;
}
};
Buenas Prácticas
- Mantén los métodos enfocados y modulares.
- Usa
const para métodos de solo lectura.
- Minimiza la complejidad de los métodos.
- Sigue el principio de responsabilidad única.
Ejemplo Completo en Entorno LabEx
#include <iostream>
#include <string>
class BankAccount {
private:
string accountHolder;
double balance;
public:
// Constructor
BankAccount(string name, double initialBalance) {
accountHolder = name;
balance = initialBalance;
}
// Método para depositar
void deposit(double amount) {
balance += amount;
}
// Método const para consultar el saldo
double getBalance() const {
return balance;
}
// Método para mostrar la información de la cuenta
void displayInfo() {
cout << "Titular de la cuenta: " << accountHolder << endl;
cout << "Saldo: $" << balance << endl;
}
};
int main() {
BankAccount account("John Doe", 1000);
account.deposit(500);
account.displayInfo();
return 0;
}
Dominando las funciones miembro, los desarrolladores pueden crear clases C++ más organizadas, eficientes y mantenibles.