Страницы

Поиск по вопросам

понедельник, 4 февраля 2019 г.

Операция :: c++

Где и как можно использовать операцию :: ?


Ответ

:: - это оператор, который используется для уточнения (квалификации) имен.
Бинарный оператор :: уточняет область видимости в которой находится имя. С левой стороны должна быть указана область видимости, с правой стороны - уточняемое имя. В качестве области видимости может быть использовано пространство имен (namespace) или тип.
namespace NamespaceName { struct TypeName { typedef int NestedType; }; } NamespaceName::TypeName a; // имя TypeName находится в пространстве имен NamespaceName NamespaceName::TypeName::NestedType b; // имя NestedType находится в типе NamespaceName::TypeName decltype(a)::NestedType c; // имя NestedType находится в типе-результате decltype(a)
Унарный оператор :: указывает что имя находится в глобальном пространстве имен.
int x; int main() { int x; return ::x; // Глобальная переменная }
Также как и для операторов и ->, после :: может быть указано ключевое слово template, чтобы показать что далее в коде идет использование шаблона:
struct X { template static void f(); }; template void g() { T::f<1>(); // Ошибка: "<" означает оператор меньше T::template f<1>(); // ОК, используется шаблон f<1> }

Комментариев нет:

Отправить комментарий