#include "persona.h" #include #include //using std::cout; //using std::endl; //using namespace std; void printFilenameOnly(const String& filename) { for ( String::length_t i = 0; i < filename.length(); ++i ) { if ( filename[i] == '.' ) break; std::cout << filename[i]; } std::cout << std::endl; } int main() { // Un metodo estatico solo puede acceder a variables estaticas std::cout << "total personas: " << Persona::obtenerTotalPersonas() << std::endl; // esto crea un objeto completo de ~104 bytes, no un puntero de 8 bytes ni una // refeferencia como ocurre en Java, y luego llama al constructor por defecto Persona persona; // Crea un objeto automatico persona1 utilizando el constructor mas general Persona persona1(101929328, Fecha(7,5,2000), mujer, "Ana Soto"); persona1.imprimir(); // std::cout << (const char*) persona1.obtenerNombreCompleto() << std::endl; String filename = "archivo.txt"; printFilenameOnly(filename); filename[0] = '_'; std::cout << filename(2,5); // FILE* file = fopen(filename, "r"); //... // fclose(file); /* // Crea un ojeto en memoria dinamica con el operador new, el cual llama al constructor Persona* persona2 = new Persona(191990212, Fecha(), hombre); persona2->imprimir(); // Crea un arreglo de objetos, a cada uno se le invoca el constructor por defecto Persona* familia = new Persona[3]; for ( size_t i = 0; i < 3; ++i ) familia[i].imprimir(); for ( size_t i = 0; i < 3; ++i ) familia[i].imprimir(); // Imprime el total de objetos de la clase Persona creados hasta el momento std::cout << "total personas: " << Persona::obtenerTotalPersonas() << std::endl; #if 0 // persona es un objeto, no un puntero, por lo que se usa el operador . // para acceder a los miembros publicos std::cout << "Edad 1 en años cumplidos: " << persona1.calcularEdad() << std::endl; std::cout << "Edad 2 en años cumplidos: " << persona2->calcularEdad() << std::endl; std::cout << "Edad f.2 en años cumplidos: " << familia[1].calcularEdad() << std::endl; #endif // persona2 es un objeto alojado en memoria dinamica, evitar fugas delete persona2; persona2 = NULL; // innecesario, pero es una buena practica // Eliminar un arreglo requiere el operador delete[] y no delete delete [] familia; */ return 0; }