Ver Mensaje Individual
  #7 (permalink)  
Antiguo 30/09/2014, 19:48
Avatar de vangodp
vangodp
 
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 11 años, 1 mes
Puntos: 38
Respuesta: funciones y estructuras

....
Pero eso es lo que pasa... en c++ no esta tu mama para ayudarte como dijo pau en el vídeo, todo el trabajo lo haces tu y por eso el lenguaje es potente por que puedes hacer lo que quieras con eso y no que un framework te ponga trabas.

En C++ las estructuras ya son un paso previo a las funciones.
Las estructuras se parecen a clases pero con todos sus atributos y métodos de forma publica.
Las clases se deben restringir el acceso directo a dichas variables. A cambio debes usar funciones que modifiquen dicha variable y no modificar una variable directamente como lo haces con las estructuras.

un ejemplo de una clase con el mismo ejemplo seria:
Código C++:
Ver original
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. class foo {
  5.     public:
  6.         void   setFrase ( string unaFrase ) { suFrase = unaFrase; }
  7.         string getFrase() { return suFrase; }
  8.         void   imprimeFrase() { cout << suFrase << endl; }
  9.     private:
  10.         string suFrase;
  11. };
  12.  
  13. int main () {
  14.     struct foo f; // creamos un objeto de la clase igual que como hacemos con la estructura
  15.     string str = "Esto es una prueba"; //eso enviaremos a la clase
  16.    
  17.     //No puedo hacer f.suFrase = "Hola"; eso me daria error. A cambio llamo sus funciones para que me hagan el trabajo "sucio" digamos XD
  18.     f.setFrase ( str ); //listo ya hemos guardado str en la frase de la clase.
  19.    
  20.     //ahora imprimimos lo que hay en la clase para ver si realmente los cambios se guardaron. Y recuerde que no puedo imprimir directamente cout<<f.sufrase<<endl; el compilador te dira que f.suFrase es privado y eso no se puede hacer ;)
  21.     //A cambio llamo una funcion que es getFrase que me la retorna para mi.
  22.    
  23.     cout << f.getFrase() << endl;
  24.    
  25.     //modificamos una vez mas la clase:
  26.     f.setFrase ( "Otra prueba" );
  27.    
  28.     //y si realmente no queremos poner el cout << f.getFrase() << endl; nada mas comodo que eso:
  29.     f.imprimeFrase();
  30.    
  31.     return 0;
  32. }

Es muy cómodo las clases cuando trabajas con cantidades de datos insanas ya que te facilitan mucho.

Al principio puede parecer que son desnecesarias por que te complican la vida demasiado pero no es así, realmente los punteros y las clases son lo mas poderoso que puedas encontrar en un lenguaje. Si los llegas a dominar seras como un Dios entro los noobs jajaj

Ya no te complico ma... me piro que tanto no me gusta escribir, y ya me agote por una semana jajaja