Hola!
Estoy intentando crear una agenda y me he topado con algo que me parecio extraño:
//Persona.h
class Persona{
int edad;
public:
Persona() : edad(60){};
int LeerEdad() const {
return this->edad;
}
};
//main.cpp
#include <iostream>
#include "Persona.h"
Persona * personas;
int main (){
personas = new Persona;
std::cout << personas->LeerEdad() << std::endl //Esto imprime 60
std::cout << personas[0].LeerEdad() << std::endl //Esto imprime 223525
return 0;
}
Me parecía haber leido en alguna parte que personas y personas[0] apuntaban al mismo segmento de memoria..... pero están imprimiendo dos valores diferentes... No son lo mismo? El uso que quiero darle a "personas" es el de un arreglo.
Saludos y gracias.
En teoría son lo mismo.
Yo por si acaso lo he compilado usando el VS y me da en ambos casos 60 y 60.
(https://drive.google.com/uc?export=view&id=1xAg5uTqAsKqAhQCz-srQYZEvKKnvr34M)
de verdad?, que extraño, entonces tengo que ver el resto del codigo :silbar:
Saludos,
- Recién voy tocando Clases en C++, un poco lioso porque hay varias maneras de estructurarlas ...
//Persona.h
class Persona {
int edad;
public:
Persona() : edad(60) {};
int LeerEdad() const {
return this->edad;
}
};
//main.cpp
#include <iostream>
#include "Persona.h"
Persona * personas;
int main () {
personas = new Persona;
std::cout << personas->LeerEdad() << std::endl; //Esto imprime 60
std::cout << personas[0].LeerEdad() << std::endl; //Esto imprime 60
//std::cout << personas.LeerEdad() << std::endl; //Esto da error
std::cout << (*personas).LeerEdad() << std::endl; //Esto imprime 60
/* Metodo clasico */
Persona personita;
//std::cout << personita->LeerEdad() << std::endl; //Esto da error
//std::cout << personita[0].LeerEdad() << std::endl; //Esto da error
std::cout << personita.LeerEdad() << std::endl; //Esto imprime 60
//std::cout << (*personita).LeerEdad() << std::endl; //Esto da error
return 0;
}
C:\Users\EdSon\Desktop>g++ main.cpp -o main.exe && main.exe
60
60
60
60
C:\Users\EdSon\Desktop>
Referencias:
https://openlibra.com/es/book/fundamentos-de-programacion-con-el-lenguaje-de-programacion-c-ed-2017 (Pág. 131 Tipos abstractos de datos, Clases)
https://openlibra.com/es/book/programacion-orientada-a-objetos-2 (Pág. 17 Clases y Objetos)
https://goalkicker.com/CPlusPlusBook/CPlusPlusNotesForProfessionals.pdf (Pág 195 Accessing Class members)
Efectivamente, me di cuenta que funciona, debe haber algo más en el código que impide que funcione bien.. >:D