Оператор ::
Оператор :: (разрешение области видимости) используется
для доступа к именам, которые находятся внутри пространств
имен, классов, перечислений или глобальной области видимости.
Левый операнд задает область видимости, а правый - имя,
к которому нужно обратиться. Если левый операнд опущен,
оператор обращается к глобальной области видимости.
Оператор :: позволяет разрешать конфликты имен,
когда одно и то же имя существует в разных пространствах
имен или классах, а также получать доступ к скрытым
глобальным переменным и функциям.
Синтаксис
scope::name
::name
ClassName::member
Namespace::name
Пример
Давайте обратимся к глобальной переменной value,
которая скрыта локальной переменной с тем же именем:
#include <iostream>
using namespace std;
int value = 10;
int main()
{
int value = 20;
cout << ::value << endl;
cout << value << endl;
return 0;
}
Результат выполнения кода:
10
20
Пример
Давайте обратимся к функции из пространства имен math,
используя оператор :::
#include <iostream>
using namespace std;
namespace math
{
int square(int x)
{
return x * x;
}
}
int main()
{
cout << math::square(5) << endl;
return 0;
}
Результат выполнения кода:
25
Пример
Давайте обратимся к статическому члену класса Counter,
используя оператор :::
#include <iostream>
using namespace std;
class Counter
{
public:
static int count;
};
int Counter::count = 0;
int main()
{
Counter::count = 42;
cout << Counter::count << endl;
return 0;
}
Результат выполнения кода:
42
Смотрите также
-
ключевое слово
namespace,
которое создает пространство имен -
ключевое слово
using namespace,
которое подключает пространство имен -
ключевое слово
using,
которое создает псевдоним для имени -
ключевое слово
static,
которое объявляет статические члены класса