Buenas tardes amigos,
hace algún tiempo que dejé de estudiar C++, y lo he vuelto a retomar, pero con muchas dudas en todos los aspectos. Sin embargo, las estoy logrando resolver poco a poco. Pero tengo una duda que no se cómo resolver.
Tengo una clase Cliente, cuyos ficheros *.hpp y *.cpp son los siguientes respectivamente:
Código:
#ifndef _CLIENTE_HPP
#define _CLIENTE_HPP
#include <string>
#include "Fecha.hpp"
using namespace std;
class Cliente {
private:
char *nombre;
char *apellido;
const Fecha fechaAlta;
static int cuenta; // Al ser STATIC, es común a todos los objetos
public:
Cliente(char *no, char *ap, Fecha f); // Mirar los inicializadores de MdP I
~Cliente();
// Métodos GET y SET
char *getNombre() const { return nombre; }
char *getApellido() const { return apellido; }
Fecha getFecha() const { return fechaAlta; }
static int obtenerCuenta() { return cuenta; }
void setNombre(char *no); // Usar el "length"
void setApellido(char *ap);
// Otros métodos
string cadena() const;
};
#endif
Código:
#include <iostream>
#include <string>
#include <sstream>
#include "Cliente.hpp"
#include "Fecha.hpp"
using namespace std;
int Cliente::cuenta = 0;
Cliente::Cliente(char *no, char *ap, Fecha f) : fechaAlta(f) {
nombre = new char[strlen(no)+1]; // Reservo memoria para el nuevo nombre
strcpy(nombre, no); // Copio el nombre
apellido = new char[strlen(ap)+1];
strcpy(apellido, ap);
cuenta++;
}
Cliente::~Cliente() {
cout << "Destructor de Cliente.\n";
}
// ...
Como podéis ver, en la clase llamo a otra clase Fecha, donde tengo también mis atributos y métodos, entre ellos un destructor cuyo código en el *.cpp es el siguiente:
Código:
Fecha::~Fecha() {
cout << "Destructor de Fecha.\n";
}
El problema está en que cuando hago cualquier cosa relacionada con una fecha en la clase Cliente, salta el destructor de Fecha. Por ejemplo, ejecutando la siguiente línea en el main, me salta el destructor de Fecha:
Código:
Fecha f1; // f1, por defecto tomará 1/1/1900
Cliente *p = new Cliente("Susana", "Lopez", f1);
Sin embargo, si comento la línea de creación del cliente, no me salta el destructor de Fecha. ¿A qué puede ser debido?
Un saludo, y muchas gracias.