Lección 1 · 1 de 20
Clases y métodos const · C++
Cree sus propias clases en C++: miembros, constructor y métodos const, con una cuenta bancaria que admite ingresos y reintegros.

Una clase junta unos datos con las funciones que trabajan con ellos. BankAccount tiene dos miembros, owner y balance, y tres métodos: deposit, withdraw y print. Con public: todo queda accesible desde fuera (en la lección siguiente verá cómo ocultarlo). Cada variable de este tipo, como ana o luis, es un objeto con sus propios datos.
El constructor se llama igual que la clase y no devuelve nada: se ejecuta cada vez que se crea un objeto. BankAccount ana("Ana", 120.0); lo llama con el titular y el saldo inicial, y dentro se guardan en los miembros.
Los métodos se llaman con un punto: ana.deposit(30.5) suma al saldo de Ana y no toca el de Luis. withdraw comprueba antes si hay dinero suficiente: Luis no puede sacar 60 de sus 40 euros (devuelve false), pero sí 25, y le quedan 15.
La palabra `const` detrás de print() promete que el método no cambia el objeto. Importa porque una referencia const, como view, solo deja llamar a métodos const: view.print() funciona, pero view.deposit(5) no compilaría. Marque como const todo método que solo lea.
En DMarlon Studio, C++ es el lenguaje de las aplicaciones de escritorio nativas con FLTK, y estas mismas clases son su base. Este programa se ejecuta tal cual con el destino Consola: pulse F9.
Código · main.cpp
#include <iostream>#include <string>// A class groups data (members) with the functions that work on it.class BankAccount {public: std::string owner; double balance; // Constructor: runs every time an account is created. BankAccount(std::string name, double initial) { owner = name; balance = initial; } void deposit(double amount) { balance += amount; } bool withdraw(double amount) { if (amount > balance) return false; // not enough money balance -= amount; return true; } // const: this method promises not to change the object. void print() const { std::cout << owner << ": " << balance << " EUR\n"; }};int main() { BankAccount ana("Ana", 120.0); BankAccount luis("Luis", 40.0); ana.deposit(30.5); std::cout << "Luis withdraws 60? " << (luis.withdraw(60) ? "yes" : "no") << "\n"; std::cout << "Luis withdraws 25? " << (luis.withdraw(25) ? "yes" : "no") << "\n"; ana.print(); luis.print(); const BankAccount& view = ana; // read-only: only const methods are allowed view.print(); // view.deposit(5) would not compile}Salida · c++ -std=c++17 main.cpp -o main && ./main
Luis withdraws 60? no Luis withdraws 25? yes Ana: 150.5 EUR Luis: 15 EUR Ana: 150.5 EUR
Para recordar
- Una clase agrupa miembros (datos) y métodos (funciones).
- El constructor lleva el nombre de la clase y prepara cada objeto nuevo.
objeto.metodo()trabaja con los datos de ese objeto.- Un método
constno cambia el objeto y se puede llamar desde una referenciaconst. - La clase termina con
};: no olvide el punto y coma.
Ejercicio
Añada un método transfer(BankAccount& to, double amount) que use withdraw y, si sale bien, llame a to.deposit(amount). Pase 50 euros de Ana a Luis y escriba las dos cuentas.