Operador de resolución de ámbito de C++

::

El operador de resolución de ámbito :: permite referencias a un tipo, objeto o función, incluso si su identificador está oculto.

Sintaxis:

::<objeto>
<subespcio>::<objeto>


Ej.- 1
...
int v = 9;           //Variable global

int main(void)
{
      int v = 15;  //variable local
      std::cout<<"Valor de v "<<v<<std::endl;
      std::cout<<"Valor de v "<<::v<<std::end;

      ...
      return 0:
}

El primer cout imprime 15, valor de la variable local
El segundo cout imprime 9, valor de la variable global

std:: antepuesto a cout y a endl, nos indica que pertenecen al espacio de nombres std que pertenece a la Librería Estándar de C++.

Ej. 2

class Vehiculo
{
 private:
      char car[20]:
      int velocidades;

public:
      char * GetCar(void);
      void SetVelocidades(int);

};


char * Vehiculo::GetCar(void)
{
      return car;
}

void Vehiculo::SetVelocidades(int velocidades)
{
      this.velocidades = velocidades;
}


En el ejemplo 2 vemos que al definir las funciones miembro de la clase Vehiculo fuera del cuerpo de la clase, se utiliza el operador de resolución de ámbito para indicar 'la pertenencia a la clase'
          char * Vehiculo::GetCar(void)
          void Vehiculo::SetVelocidades(int velocidades)