#include "persona.h" #include #include #include // Las variables estaticas son variables globales, hay que darles memoria long Persona::totalPersonas = 0; // Constructor. Los miembros de datos se deben inicializar en el mismo orden en // que fueron declarados. El constructor Fecha() se invoca automaticamente cuando // llegue el turno de inicializar la estructura fechaNacimiento Persona::Persona(long cedula, const Fecha& fn, Sexo sexo, const char* nombre) : cedula(cedula) , fechaNacimiento(fn) , sexo(sexo) , nombre(strdup(nombre)) { ++totalPersonas; } Persona::~Persona() { free(nombre); } // Un metodo: una funcion que esta dentro de una clase o estructura int Persona::calcularEdad() const { // El parametro Persona* this es automaticamente agregado por // el compilador de C++, es buena practica acceder a los miembros // a traves de this->miembro, pero no es necesario return 2013 - /*this->*/fechaNacimiento.anno; } void Persona::imprimir() const { std::cout << cedula << ": " << nombre << ". " << SexoStr[sexo]; //fechaNacimiento.imprimir(); static long invocaciones = 0; ++invocaciones; std::cout << "\nimprimir ha sido invocado " << invocaciones << " veces\n"; }