Операция двойного двоеточия называется операцией разрешения области видимости.
Когда мы пишем ::func()
(слева от оператора ничего нет), мы уточняем принадлежность к области видимости глобального пространства имён? Зачем?
Допустим, Ваш код работает в пространстве имён ns1
, внутри которого есть функция ns1::func()
, но при этом Вам нужно вызвать функцию func()
, определённую без пространства имён (в глобальном пространстве). Вот в таких случаях Вам и нужно использовать ::func()
, ибо без этого уточнения компилятор вызовет ns1::func()
, чего Вам не хотелось бы.
Правила поиска имен (name lookup) в С++ очень сильно отличаются для случая квалифицированных имен (т.е. с явным указанием класса или пространства имен) и неквалифицированных имен (без такого указания). Если вас чем-то не устраивает поведение неквалифицированного поиска, которое сложно, многоэтажно и включает в себя массу нюансов вроде ADL, то вы можете подавить это поведение путем указания квалифицированного имени.
В частности, в качестве частного примера, вам может понадобиться вызвать функцию ::func
там, где ее имя скрыто локальной переменной int func;
.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Необходимо добавить пробелы между символами вывода и записать их в строки
Подскажите где можно почитать про написание Native программ (которые можно запустить до запуска графической оболочки Windows)Пока только нагуглил,...