Diferencia entre revisiones de «Operador de acceso a ámbito»
Línea 50: | Línea 50: | ||
*[[Operador sizeof|Operador sizeof]] | *[[Operador sizeof|Operador sizeof]] | ||
*[[Operador typeid|Operador typeid]] | *[[Operador typeid|Operador typeid]] | ||
+ | *[[Operador de preproceso|Operador de preproceso]] | ||
== Fuente == | == Fuente == | ||
* [http://www.zator.com/Cpp/E4_9_19.htm Operador de acceso a ámbito] | * [http://www.zator.com/Cpp/E4_9_19.htm Operador de acceso a ámbito] | ||
* [http://fpsalmon.usc.es/genp/doc/cursos/C++/conceptos/scope.html El operador ::] | * [http://fpsalmon.usc.es/genp/doc/cursos/C++/conceptos/scope.html El operador ::] | ||
* [http://arco.esi.uclm.es/~david.villa/pensar_en_C++/vol1/ch03s07.html Los operadores y su uso] | * [http://arco.esi.uclm.es/~david.villa/pensar_en_C++/vol1/ch03s07.html Los operadores y su uso] | ||
− | |||
[[Category:Informática]] [[Category:Lenguajes_de_programación]] [[Category:Programación]] | [[Category:Informática]] [[Category:Lenguajes_de_programación]] [[Category:Programación]] |
Revisión del 13:02 6 sep 2011
|
Operador de acceso a ámbito. El operador :: de acceso a ámbito o resolución de ámbito actúa como puente o camino para acceder a objetos que momentáneamente están fuera de ámbito, permite referenciar (acceder) a un tipo, objeto, función o enumerador incluso si su identificador está oculto. Por ejemplo, anteponiéndolo a un identificador global, permite acceder al mismo incluso cuando es ocultado por una redeclaración homónima
Sumario
Ejemplo
int x = 2; // Variable global ... void main() { int x = 3; // Variable local std::cout << "X = " << x << std::endl; // L.5: x local std::cout << "X = " << ::x << std::endl; // L.6: x global }
En el ejemplo anterior, la variable local x oculta momentáneamente a la global del mismo nombre. Sin embargo, como puede verse en L.6, el operador :: antepuesto a la variable señala que no se trata de la versión local, sino la perteneciente al ámbito global. Al mismo tiempo, los especificadores std:: antepuestos a los objetos cout y endl especifican que tales objetos se encuentran en dicho espacio de nombres std, que pertenece a la Librería Estándar C++.
Sintaxis
Como se deduce del propio ejemplo, desde un punto de vista formal existen dos tipos de operador de acceso a ámbito: unario y binario, que adoptan respectivamente las siguientes sintaxis:
:: <objeto> // Op. unario <subespacio> :: <objeto> // Op. binario
En ambos casos, <objeto> es cualquier objeto, función o enumerador y se refiere a la versión del espacio global. Es el caso del término ::x en L.6 del ejemplo anterior. Cuando se utiliza como operador binario, <subespacio> es el nombre de un subespacio de nombres diferente del actual; el nombre de una clase; estructura o unión (recuerde que estas entidades constituyen un tipo especial de espacio de nombres). En estos casos el operador sirve para especificar objetos de espacios de nombres diferentes del actual. Ejemplo:
namespace ALPHA { ... long double LD; class C { public: int x; }; }
ALPHA::LD = 1.0; // Acceso a variable LD
Para acceder a un miembro de clase debe especificarse el nombre de la clase seguido del operador y del miembro. Por ejemplo:
ALPHA::C::x = 1 // Acceso a miembro de C en ALPHA
- Los identificadores precedidos por el operador de resolución de ámbito se denominan identificadores cualificados.
Véase también
- Operadores
- Operadores aritméticos
- Operadores lógicos
- Operadores de manejo de bits
- Operador condicional
- Operador coma
- Operadores relacionales
- Operadores de asignación
- Operadores de modelado de tipos
- Operadores añadidos a expresión
- Operadores de puntero
- Operador new
- Operador delete
- Operador sizeof
- Operador typeid
- Operador de preproceso