Programación General > C/C++
gramatica de clases en C++
picyo:
vaya titulo..no sabia como resumir muy bien . Bueno voy directo. Yo he hecho java, y en este lenguaje, al llamar a una funcion, se llama primero a la clase, por ejemplo :
variableObjeto"x"=ClaseQueMeInvento.FunciónQueMeInvento();
Pues haciendo analogía con C++, veo, por ejemplo esto :
--- Código: C++ ---Console::ReadKey()
Bien, no se explícitamente si Console es una clase en si, o un conjunto de clases. Pero lo que si que tengo claro es que se refiere a algo de clases, y es por eso que me hago una analogía entre "x.x" (java) y "x::x" ( C++).
Hasta aquí, fuera así o no fuera así, me lo creía y le daba explicación a esto. Pero... ahh he visto esta otra función :
--- Código: C++ ---while(keyPress.Key != ConsoleKey::Escape); XConcretamente esto :
--- Código: C++ ---keyPress.Key != ConsoleKey::Escape);
Bien que pasa aqui?
Escape es un objeto de la clase Consolekey? Si es así, entonces pues Console::ReadKey() no debería tener forma de función..
keyPress es una función de la clase Key?
No tengo las idas muy claras acerca de la diferenciación entre "x.y" y " "x::y"
:(
pmike:
ConsoleKey::Escape
se entiende que Escape es un método de la clase ConsoleKey
keyPress.Key
es una tipo de dato llamado estructura por lo que accedemos al elemento Key de la estructura KeyPress
Es lo mismo prácticamente pero con diferente tipo de dato (estruct y class), y accedes a un determinado elemento.
picyo:
ahhh Ok. Claro, un struct, para acceder a él es a través del punto. ahora visto asi queda mas que claro... me habia "ofuscado" en tipos o clases, y bueno no habia pensado en el struct. Lo que harñe será ver cómo esta realizado ese struct y de que clase ( o tipo ) es el elemento key. Merci!
Epa:
Buenas.
El . es tambien el operador miembro de las clases.
Por ejemplo si la interfase de la clase es una funcion y una variable, usarias
clase.funcion()
y
clase.variable
para llamar la funcion y obtener el valor de la variable.
Para entender bien el operador :: te sugiero que busques info de los espacios con nombre (namespace). Ya que es un operador de ambito, y no de miembro.
En http://www.conclase.net hay un manual en donde lo explican.
Saludos
picyo:
Ok, entiendo que el operador "::" sólo dice la procedencia del espacio de la funcion o variable ( al decir variable seria mejor ya hablar de solo objeto?). Por ejemplo:
--- Código: C++ --- #include <iostream>using namespace std;int main(){ cout << "Hola " <<endl; /////////// 1 std::cout << " ¿ Que tal ?"<<endl; /////////// 2
En la nota 1 no hay operador, en la nota 2 si. Esto dice que la función cout deriva de ese namespace (std). Supongo que en ese namespace han puesto todos los nombres de las variables y/o funciones que se pueden usar, de distintas clases o librerías ( iostream es la clase o libreria a la que me refiero).
Entonces, gracias a que he definido ese espacio ("using namespace std;" ó "std::cout" ), el compilador entiende esa funcion. Pero, cúando, pues he de definir una clase ? es decir, por que en esta función :
--- Código: C++ ---keyPress.Key la "procedencia" la he de poner desde la clase keyPress desde el operador punto? Acaso no esta definida pues en ningún namespace? O de otro modo, por que no puedo prescindir de usar el namespace std y por ejemplo hacer la llamda de la funcion de este modo :
--- Código: C++ --- iostream.cout(); ( que se que no entiende el compilador esto último)
Navegación
[#] Página Siguiente
Ir a la versión completa