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
51  Programación / Programación C/C++ / Re: C++, duda con las clases en: 9 Julio 2015, 01:55 am
Si creas un constructor con parámetros que debes introducir, pero después no se lo asignas a un objeto, el compilador te dará un error

Código que da error:

Código
  1. class FOO {
  2. public:
  3. FOO(int nParametro1, int nParametro2);
  4.  
  5. void metodo1();
  6. void metodo2();
  7. };
  8.  
  9. int main() {
  10. FOO foo;
  11.  
  12. return 0;
  13. }

Mensaje de error: No existe ningún constructor predeterminado para la clase "FOO" (Mensaje de Visual Studio v12.0)

Código bueno:
Código
  1. class FOO {
  2. public:
  3. FOO(int nParametro1, int nParametro2);
  4.  
  5. void metodo1();
  6. void metodo2();
  7. };
  8.  
  9. int main() {
  10. FOO foo = FOO(5, 6);
  11.  
  12. return 0;
  13. }

Para simplificar, también lo puedes poner así:
Código
  1. FOO foo(5, 6)
52  Programación / Programación C/C++ / Re: C++, duda con las clases en: 9 Julio 2015, 01:40 am
El constructor es un método (para que me entiendas, función perteneciente a una clase) especial. Este método sirve para inicializar la clase (por ejemplo, inicialuzar las variables privadas) y es llamado cuando declaras un objeto. Al igual que las funciones, puedes sobrecargarlo.

En el caso de la clase de ejemplo que te he puesto, el constructor es el siguiente:
Código
  1. Persona(const char *lpszName, const char *lpszDireccion, const char *lpszDNI)

Como podrás ver, al principio no lleva ni 'int', ni 'void' ni ningún tipo de variable. Esto es porque se da por defecto void. Por ejemplo, esto también sería válido:
Código
  1. void Persona(const char *lpszName, const char *lpszDireccion, const char *lpszDNI)

Como ya se ha dicho, el constructor sirve para inicializar la clase, por lo que sólamente podrás usarlo cuando declaras el objeto, como puedes ver en el código que te dejé de ejemplo:

Código
  1. int main() {
  2.        Persona persona = Persona("Pepe", "Calle falsa Nº 123", "1254687321-P");

COSA MUY IMPORTANTE: ¡¡EL CONSTRUCTOR DEBE TENER EL MISMO NOMBRE QUE LA CLASE!!
53  Programación / ASM / Re: (Petición) Tutorial de ASM usando C++ (compilador el de Visual Studio v12.0) en: 9 Julio 2015, 01:36 am
Bueno, pensé que al usar un compilador en específico sería general... En fin
54  Programación / ASM / Re: (Petición) Tutorial de ASM usando C++ (compilador el de Visual Studio v12.0) en: 8 Julio 2015, 05:52 am
Vale, aunque me tenga que centrar en una arquitectura, seguiré tu consejo
55  Programación / ASM / (Petición) Tutorial de ASM usando C++ (compilador el de Visual Studio v12.0) en: 8 Julio 2015, 05:25 am
Hola, muy buenas a tod@s. Me gustaría saber si conocen algún tutorial (a ser posible en Español) sobre la utilización de lenguaje ensamblador en C++ con el compilador que usa el Visual Studio v12.0. A ser posible, que el tutorial no presuponga que se algo de ensamblador (registros, y todo eso). No quiero aprender a usar ASM con ensambladores como MASM, NASM o TASM por la dependencia de la arquitectura, es decir, que me quiero quitar de ese tipo de complicaciones. Estoy usando la versión de 32 bits

Aun con todo lo que he dicho, ¿es recomendable que aprenda ensamblador de esta manera, o es mejor para el entendimiento que cree los programas enteramente con ensamblador?

Muchas gracias!
56  Programación / Programación C/C++ / Re: C++, duda con las clases en: 7 Julio 2015, 22:28 pm
¿Que quieres decir? Voy a presuponer que la clase la has creado tu (en caso contrario, si no tiene las funciones getter o setter es imposible visualizar o sobreescribir el valor respecticamente). Ejemplo:

Código
  1. #include <iostream>
  2.  
  3. class Persona {
  4.        public:
  5.                Persona(const char *lpszName, const char *lpszDireccion, const char *lpszDNI);
  6.  
  7.                const char *getName();
  8.                const char *getDireccion();
  9.                const char *getDNI();
  10.  
  11.        private:
  12.                const char *m_lpszName;
  13.                const char *m_lpszDireccion;
  14.                const char *m_lpszDNI;
  15. };
  16.  
  17. int main() {
  18.        Persona persona = Persona("Pepe", "Calle falsa Nº 123", "1254687321-P");
  19.  
  20.        std::cout << "El nombre de la persona es: " << persona.getName() << std::endl;
  21.        std::cout << "La dirección de la persona es: " << persona.getDireccion() << std::endl;
  22.        std::cout << "El DNI de la persona es: " << persona.getDNI() << std::endl;
  23.  
  24.        std::cin.get();
  25.        return 0;
  26. }
  27.  
  28. Persona::Persona(const char *lpszName, const char *lpszDireccion, const char *lpszDNI) {
  29.        m_lpszName = lpszName;
  30.        m_lpszDireccion = lpszDireccion;
  31.        m_lpszDNI = lpszDNI;
  32. }
  33.  
  34. const char *Persona::getName() {
  35.        return m_lpszName;
  36. }
  37.  
  38. const char *Persona::getDireccion() {
  39.        return m_lpszDireccion;
  40. }
  41.  
  42. const char *Persona::getDNI() {
  43.        return m_lpszDNI;
  44. }

Como ves, en el constructor le pasamos los datos de una persona. A partir de aquí, no podremos modificar el valor de las variables de la clase porque son privados. Sin embargo, podremos visualizarlos porque hemos creado las funciones 'getter', las cuales sirven para visualizar el contenido de las variables.
57  Programación / Programación C/C++ / Re: C++, duda con las clases en: 7 Julio 2015, 21:22 pm
En C++, las clases y las estructuras son prácticamente lo mismo. La única diferencia es que las estructuras, por defecto, todos sus miembros son públicos, y en las clases pasa al contrario, son privados.

En cuanto a ala utilidad práctica, te voy a dar un ejemplo:
Imagínate que tienes una clase que guarda el DNI, el nombre y dirección de una persona. Como podrás suponer, una vez hemos ingresado los datos no se pueden modificar (sería ilegal XD). Para prevenir que el usuario pueda modificar las variables, se hacen privadas y se crean las funciones 'getter' y si es preciso las funciones 'setter', las cuales permiten o bien solo visualizar el contenido de la variable o solamente modificarlo.

Espero que se haya entendido
58  Programación / Programación C/C++ / Re: Alguien podría explicarme este codigo por favor? en: 2 Julio 2015, 21:28 pm
No sé de donde habrás sacado este código, pero no me parece un buen ejemplo. Me explico: En primer lugar, lo que tú pasas a la función es un entero y un puntero hacia un tipo char. Pues bien, tu no sabes si ese puntero está inicializado o no, o siquiera sabes si tiene espacios suficientes. Por ejemplo, podrías haber declarado una variable así:
Código
  1. char cadena[2] = "";
y tu se la pasarías a la función como bin_to_string(value, cadena); En este caso, es posible que el programa crashee por salirse de la memoria del programa. En segundo lugar, a mi parecer es mejor tenerlo mas ordenado. Cuando declaras la variable uint la dejas sin inicializar, y la inicializas después con una constante. Mejor que la inicialices cuando la declaras siempre  que sea posible.

Por cierto, usa las etiquetas GeSHI :P

Mod: no hacer doble post
59  Programación / Programación C/C++ / Re: Fatal Borland C++ 5.5.1 en: 2 Julio 2015, 21:21 pm
Es posible que tengas el ejecutable abierto en segundo plano. Puedes comprobarlo en el administrador de tareas (en windows).
60  Programación / Programación C/C++ / Re: (Ayuda) Obtener lista de archivos y carpetas en una carpeta con C++ en: 2 Julio 2015, 21:10 pm
Muchas gracias!
Páginas: 1 2 3 4 5 [6] 7 8 9 10 11 12 13 14 15
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines