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
Información sobre la plantilla
Concepto: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

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

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

Fuente