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

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


  Mostrar Mensajes
Páginas: 1 2 3 4 [5] 6 7 8 9 10 11 12 13 14 15 16 17 18 19
41  Programación / Programación C/C++ / Re: Cual es el sentido de las funciones virtuales puras? en: 5 Octubre 2019, 22:46 pm
Gracias por responder.

Aunque de todas formas con el ejemplo que me das (que es valido) aun no le hallo sentido a tener que escribir una linea (funcion virtual pura) mas en la super clase ya que siempre en las subclases la tendré que declarar (override) y definir...  Veo a las funciones puras como una interfaz mas que nada, ejemplo:

Código:
class Animal{
protected:
     virtual void emitir_sonido() const = 0;

};

Código:
class Canario : protected Animal{
protected:
     void emitir_sonido() override{ std::cout << "piop piop"; }
};

Código:
class Arana: protected Animal{
protected:
     //nada
};

No sería mejor esto?

Código:
class Animal{
protected:
     //nada
};

Código:
class Canario : protected Animal{
protected:
     void emitir_sonido(){ std::cout << "piop piop"; }
};

Código:
class Arana: protected Animal{
protected:
    //nada
};

De esta forma, de igual forma no necesito funcion virtual pura para hacer callar a la araña y para hacer cantar al canario...o no?
42  Programación / Programación C/C++ / Cual es el sentido de las funciones virtuales puras? en: 5 Octubre 2019, 17:59 pm
Hola!

Hago esta pregunta desde la ignorancia, entiendo que virtual/override ayuda mucho a no tener que redefinir trozos de codigo de una función, sin embargo no entiendo cual es el fin de las funciones virtuales puras, es decir, no implementan nada, solo veo que ocupan un espacio en el archivo de cabecera, al fin y al cabo de todas formas tendrás que volver a declararlas y definirlas en las subclases como override...

Código:

class A{
protected:
     virtual void hacer_algo() = 0;     //Esto me parece que estuviera de más.....
     //otras cosas..

};

Código:
class B : public A{
protected:
     void hacer_algo() override;   //.... si aqui tengo que estar escribiendolo nuevamente.

};

Por qué no directamente?:

Código:
class A{
protected:
     //otras cosas
};

Código:
class B : public A{
protected:
     void hacer_algo();
};
43  Programación / Programación C/C++ / enums heredados ? en: 5 Octubre 2019, 04:44 am
Buenas noches:

De la misma forma que se puede virtualizar una función y sobreemontarla en alguna clase hija... me pregunto si es posible hacer lo mismo con los enums....

por ejemplo:

Código:
class padre{

protected:
     virtual enum mis_objetos{    //virtual aqui?
          objPrincipal = 99
     };

     virtual void una_funcion(mis_objetos mo){
          //hacer algunas cosas previas que sirven para todas las subclases//
     }

}

Código:
class hija1 : public padre{

protected:
     enum mis_objetos override{
          obj0 = 0,
          obj1
     };

     void una_funcion(ms_objetos mo) override;
}


Código:
class hija2 : public padre{

protected:
     enum mis_objetos override{
          obj50 = 3,
          obj55
     };

     void una_funcion(ms_objetos mo) override;
}

Como verán, cada clase tiene sus propios elementos enum, sin embargo, para que la función una_funcion(mis_objetos) pueda sobremontarse, es necesario que el enum exista en el padre..

Es posible hacer esto? (con el codigo estoy especulando, lo mas seguro que tenga errores)

Gracias.
44  Programación / Programación C/C++ / Re: Variables estaticas... en: 2 Septiembre 2019, 01:14 am
Muy bien ya me ha quedando claro...
 :o

Gracias..
45  Programación / Programación C/C++ / Re: Variables estaticas... en: 31 Agosto 2019, 23:07 pm
ok, entiendo, pero yo tenía entendido que cuando tu definías algo, estas usando el constructor... o es que extern es la excepción?

Alpha.h
Código
  1. class Alpha{
  2.     int x;
  3. public:
  4.     Alpha() : x{5}{}
  5.     //hacer otras cosas
  6. }
  7.  

main.cpp
Código
  1. #include "Alpha.h"
  2.  
  3. int main (){
  4.     Alpha a;            //Nota (a)
  5. }
  6.  

Nota (a) : A pesar de estar declarando un objeto llamado a de tipo Alpha se estaría inicializando el campo privado x y valdría 5... (es asi como yo tengo en mi programa el objeto Sesion inicializa sus campos privados a un string "NA".

Sin embargo, acabo de darme cuenta que incializar y definir no son la misma cosa...


46  Programación / Programación C/C++ / Re: Variables estaticas... en: 30 Agosto 2019, 17:22 pm
De acuerdo, me parece lógico...

Bueno, en este caso he querido usar un int como ejemplo para describir mi duda, en el programa que estoy intentando hacer, lo que quiero usar como variable global es un tipo propio que se inicializa con un constructor.  En el constructor de ese tipo propio (que se llama Sesion) se inicializan los campos privados, por lo que ...

Código
  1. extern Sesion s;
  2.  

...estaría inicializando dichos campos automáticamente, aún asi debo volver a definir tal como lo hiciste cuando escribiste esta linea ? :

Código
  1. int x::num = 10; // definida aquí o en cualquier otro cpp
  2.  

O es que al escribir extern Sesion s en realidad no estoy ejecutando el constructor con su inicialización?

Saludos! y gracias por las respuestas... han sido de mucha ayuda @std::string Manolo y @Loretz.
47  Programación / Programación C/C++ / Re: Variables estaticas... en: 29 Agosto 2019, 22:16 pm
La cita 2 está relacionada con la 3... es que no me supe explicar correctamente...lo siento  :rolleyes:

Entonces la solución que tengo es lo que planteaba Manolo std::string con la palabra extern de lo contrario sería usar objetos persistentes pero no creo que esto sea muy elegante....


48  Programación / Programación C/C++ / Re: Variables estaticas... en: 29 Agosto 2019, 17:11 pm
Gracias por las respuestas...


Manolo, te refieres a extern ?

Loretz, entonces las variables estáticas se instancian mediante la inclusión de archivos y no de tipos ... es asi?... por ejemplo, lo que has dicho: estoy incluyendo el mismo archivo en dos archivos independientes, serian dos instancias separadas de la variable estatica... sin embargo, si instancio dos tipos Archivo2 en un mismo archivo, ahi si estaria utilizando la misma variable estatica para ambos casos.... ?

Suponiendo que tengo una clase llamada Alpha, que tiene un campo publico estático llamado myName, si yo instancio esta clase mas de una vez dentro del mismo archivo fuente, todas las instancias de la clase estarían accediendo a la misma dirección de memoria de myName...

Es al menos lo que veo aqui en este ejemplo:
https://www.tutorialspoint.com/cplusplus/cpp_static_members.htm

Saludos..
49  Programación / Programación C/C++ / Variables estaticas... en: 29 Agosto 2019, 05:16 am
Muy buenas..

Tengo un mal concepto quizá de lo que son las variables estáticas, yo las imagino algo asi como un contenedor que se crea automáticamente al iniciarse un programa, vive durante todo el programa y luego se cierra una vez que el programa termina... como un bolso de viaje que tomas al iniciar el viaje y te deshaces de él cuando regresas a casa... asi es como yo las veo.. (por favor, indicarme si estoy mal).

El siguiente código no esta reflejando esto:

main.cpp
Código
  1. #include <iostream>
  2. #include "Archivo2.h"
  3. #include "Archivo1.h"
  4.  
  5. int main() {
  6. x::num = 10;
  7. std::cout << "Desde main -> " << x::num << "Memoria : " << &x::num;
  8. std::cout << std::endl;
  9. Archivo1 a;
  10. a.printVal();
  11. return 0;
  12. }
  13.  


Archivo1.h
Código
  1. #pragma once
  2. struct Archivo1{
  3. void printVal() const;
  4. };
  5.  

Archivo1.cpp
Código
  1. #include "Archivo2.h"
  2. #include "Archivo1.h"
  3. #include <iostream>
  4.  
  5. void Archivo1::printVal() const {
  6. std::cout << "Desde Archivo1 -> " << x::num << "Memoria : " << &x::num;
  7.  
  8. }
  9.  

Archivo2.h
Código
  1. namespace x{
  2.     static int num;
  3. }
  4.  


La salida de consola "Desde Main ->" imprime 10
La salida de consola "Desde Archivo1 ->" imprime 0...

Creí que estaba imprimiendo el mismo elemento, pero no, cuando le agregue que imprimiera la dirección de memoria, me encontré con la sorpresa de que ambas estan imprimiendo direcciones diferentes....

En qué momento se creó una nueva instancia de la variable estática y como puedo solucionar este dilema?.. mi intención es escribir e imprimir en una sola variable x::num

Saludos_!

50  Programación / Programación C/C++ / Uso de Threads y error de compilación asignado a una libreria estandar... en: 4 Agosto 2019, 00:58 am
Buenas..

Tengo este código y me está saliendo error, ppienso que la sintaxis está correcta.. aun no entiendo por qué el error..  Alguna pista?


Ver en el siguiente enlace el codigo para probar:
https://onlinegdb.com/ryO2ptQ7B

Saludos.


Edit : Le quite el simbolo de referencia en el parámetro para la funcion de la linea 5 y ahí compiló..
Pero no veo por qué...
Páginas: 1 2 3 4 [5] 6 7 8 9 10 11 12 13 14 15 16 17 18 19
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines