2015-07-07 6 views
2

я наткнулся на следующую структуру кода в C++:C++ «::» без имени класса

uint32_t AClass::Action(....) 
{ 
.. 
     status = ::Action(...); 
.. 
} 

Я не уверен, что ::Action() средства. К какому классу он принадлежит? ПРИМЕЧАНИЕ. Список аргументов ::Action(...) отличается от AClass::Action(...).

ответ

10

Ведущий :: означает, что Action здесь ссылается на функцию, не являющуюся членом в глобальном пространстве имен, вместо ссылки на AClass::Action в текущем пространстве имен.

+0

Как узнать, где находится пространство имен корней? – drdot

+1

@dannycrane Я полагаю, что корневое пространство имен также можно назвать пространством имен «по умолчанию». Любой код, который не находится в явном блоке «namespace», находится в корневом пространстве имен. Все остальные пространства имен по существу «внутри» корневого пространства имен. –

+1

@RedRoboHood Было бы неплохо, если бы вы могли отличить корневое пространство имен от глобальной области –

-2

:: Действие() означает, что это функция под глобальным пространством имен.

+1

Это неправильно. Анонимные пространства имен создаются путем переноса кода в блоки namespace {/ * ... * /} ', а не с помощью ведущего оператора' :: '. –

+0

Ты прав, я ошибся –

 Смежные вопросы

  • Нет связанных вопросов^_^