Что означает "::" в с++?
Не смог быстро нагуглить, что означает :: в с или с++? Гугл не хочет искать по этим символам. Знаю, что вопрос глупый, но все же.
Не смог быстро нагуглить, что означает :: в с или с++? Гугл не хочет искать по этим символам. Знаю, что вопрос глупый, но все же.
А вы книгу читали по С++ хоть какую-нибудь? Это ж есть везде.
Вот отсюда, например (перевёл):
Уточнённый идентификатор — это идентификатор, имя функции-оператора, имя оператора-литерала или идентификатор шаблона, которому предшествует оператор разрешения области видимости
::
, и, возможно, последовательность имён классов и пространств имён (namespace), разделённых такими же операторами разрешения области видимости.Например, выражение
std::string::npos
являетсяid
-выражением, которое именует статический членnpos
классаstring
из пространства имёнstd
. Выражение::tolower
именует функциюtolower
из глобального пространства имён. Выражение::std::cout
именует глобальную переменнуюcout
из пространства имён верхнего уровняstd
. Уточнённый идентификаторboost::signals2::connection
именует типconnection
, принадлежащий пространству имёнsignals2
, которое само находится в пространстве имёнboost
.
Своими словами: в каждый момент времени у вас есть область видимости имён. Вы можете импортировать в неё (при помощи using
) другие имена. Когда вы указываете имя, она ищется в вашей области видимости. Но если вы указываете ::
, это модифицирует область видимости. X::Y
— это то же, что просто Y
, но ищется в пространстве имён, которое из вашей точки видно как X
. ::X::Y
— это то же самое, но X
ищется не в вашей области видимости, а в глобальной (а в этом X
уже ищется Y
). И так далее.