elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: AIO elhacker.NET 2021 Compilación herramientas análisis y desinfección malware


  Mostrar Mensajes
Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 [16] 17 18 19 20
151  Programación / Programación C/C++ / Re: Puntero e indice 0 de ese puntero... en: 23 Febrero 2019, 13:11 pm
Efectivamente, me di cuenta que funciona, debe haber algo más en el código que impide que funcione bien.. >:D
152  Programación / Programación C/C++ / Re: tiene sentido un puntero para uso como arreglo con una dimensión entregada? en: 23 Febrero 2019, 02:52 am
Excelente gracias  :D
153  Programación / Programación C/C++ / Re: tiene sentido un puntero para uso como arreglo con una dimensión entregada? en: 23 Febrero 2019, 00:19 am
De ser asi, en caso de que otro proceso esté ocupando ese espacio en memoria que está fuera del rango, mi programa saldría con un error de violación de acceso verdad?

Entonces lo correcto sería declarar una dimensión, es decir

Código
  1. Persona * persona = new Persona[49];
  2.  

en vez de

Código
  1. Persona * persona = new Persona;
  2.  

Si es que quiero usar un arreglo, verdad?

154  Programación / Programación C/C++ / tiene sentido un puntero para uso como arreglo con una dimensión entregada? en: 22 Febrero 2019, 23:12 pm
Código
  1.  
  2. int main (){
  3.  
  4.        int * numero = new int[49];
  5.        numero[151] = 750;
  6.        std::cout << numero[151] << std::endl;   //esto imprime 750 sin problemas...
  7.  
  8.  
  9.        return 0;
  10. }
  11.  

Como verán, estoy creando un puntero con una dimensión de 49 espacios de memoria del tipo int, luego estoy asignando un valor a un indice que está mas allá del rango (49) y luego lo imprimo en pantalla....  lo curioso es que me funciona, por que ?... es que acaso es lo mismo declarar:

Código
  1. int * numero = new int[49];
  2.  

que

Código
  1. int * numero = new int;
  2.  

que opinan?..
Saludos..
155  Programación / Programación C/C++ / Re: Puntero e indice 0 de ese puntero... en: 22 Febrero 2019, 13:31 pm
de verdad?, que extraño, entonces tengo que ver el resto del codigo :silbar:
156  Programación / Programación C/C++ / Puntero e indice 0 de ese puntero... en: 22 Febrero 2019, 02:22 am
Hola!

Estoy intentando crear una agenda y me he topado con algo que me parecio extraño:

Código
  1. //Persona.h
  2. class Persona{
  3.  
  4.       int edad;
  5.  
  6. public:
  7.       Persona() : edad(60){};
  8.       int LeerEdad() const {
  9.              return this->edad;
  10.       }
  11.  
  12. };
  13.  

Código
  1. //main.cpp
  2. #include <iostream>
  3. #include "Persona.h"
  4.  
  5. Persona * personas;
  6.  
  7. int main (){
  8.  
  9.       personas = new Persona;
  10.  
  11.       std::cout << personas->LeerEdad() << std::endl   //Esto imprime 60
  12.  
  13.       std::cout << personas[0].LeerEdad() << std::endl //Esto imprime 223525
  14.  
  15.       return 0;
  16.  
  17. }
  18.  

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.
157  Programación / Programación C/C++ / Re: Sobrecarga de operador << solo me compila si uso la palabra "friend" en: 14 Febrero 2019, 21:50 pm
Si, @Loretz , lo que esperaria ahí es Segment fault 11... tienes razon, aunque lo escribi a la rapida para mostrar mi problema de ostream mas que nada...  :laugh:

@Yrex-DwX ya me di cuenta que con ostring no sacaba nada jajha
158  Programación / Programación C/C++ / Re: Sobrecarga de operador << solo me compila si uso la palabra "friend" en: 13 Febrero 2019, 13:38 pm
entnoces no era obligación meter la palabra "friend", sabía!.. no me hacía sentido, simplemente tenía que declarar y definir fuera de la clase esta sobrecarga ....

He usado también la sobrecarga == y ésta sí que se comporta como yo esperaba dentro de la clase, por lo visto no todos los operadores se sobrecargan de la misma forma verdad?.

Estuve observando el ostream que mencionas, pero por mas que veo, se me pasa el error, no lo veo, en qué linea está ?..

Saludos y gracias.
159  Programación / Programación C/C++ / Re: Punteros fantasmas... (asi le puse yo).. en: 13 Febrero 2019, 13:15 pm
buen punto... lo tendré en cuenta la siguiente vez..  :)
160  Programación / Programación C/C++ / Sobrecarga de operador << solo me compila si uso la palabra "friend" en: 13 Febrero 2019, 04:44 am
Buenas amigos..

Tenía entendido que la palabra reservada "friend" permitía acceder a todas mis variables privadas de mi clase desde fuera, es como una excepción a la regla, para friend sería todo publico.

He querido utilizar el operador sobrecargado << para que mi clase pueda ser impresa por la salida estándar.

Esto es lo que tengo:

Código
  1. //Persona.h
  2. #include <iostream>
  3.  
  4. class Persona{
  5.  
  6.     char * nombre;
  7.     int edad;
  8.  
  9. public:
  10.  
  11.     Persona();
  12.     ~Persona();
  13.  
  14.     //La siguiente linea da error si no coloco la palabra friend al principio
  15.     std::ostream & operator<<(std::ostream & os, Persona & _estaPersona);
  16.     char * LeerNombre() const;
  17.     int LeerEdad() const;
  18.     void InsertarNombre(const char * _nuevoNombre);
  19.     void InsertarEdad(const int _nuevaEdad);
  20.  
  21. };
  22.  


Código
  1. //Persona.cpp
  2.  
  3. #include "Persona.h"
  4.  
  5. using namespace std;
  6.  
  7. //Sobrecarga operador
  8. ostring & operator<<(ostring & os, const Persona & _estaPersona){
  9.     os << "Nombre : " << _estaPersona.LeerNombre() << endl;
  10.     os << "Edad     : " << _estaPersona.LeerEdad() << endl;
  11.     return os;
  12. }
  13.  
  14. char * Persona::LeerNombre(){
  15.     return nombre;
  16. }
  17.  
  18. int Persona::LeerEdad(){
  19.     return edad;
  20. }
  21.  
  22. void Persona::InsertarNombre(const char * _nuevoNombre){
  23.     strcpy(nombre, _nuevoNombre);
  24. }
  25.  
  26. void Persona::InsertarEdad(const int _nuevaEdad){
  27.     edad = _nuevaEdad;
  28. }
  29.  
  30.  

Código
  1. //main.cpp
  2. #include Persona.h
  3.  
  4. int main (){
  5.     Persona p;
  6.     p.InsertarNombre("ElHacker");
  7.     p.Edad(37);
  8.  
  9.     std::cout << p << endl;
  10. }
  11.  

Lo que no entiendo, es que según la definición de friend, esto no me calza, yo no quiero acceder desde fuera a una propiedad privada, solo estoy intentando acceder a LeerNombre() y LeerEdad() que son publicas, no debería necesitar colocar friend... es que acaso friend con el operador trabaja de forma distinta?

Gracias de antemano.
Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 [16] 17 18 19 20
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines