путать с оператором :: function

0

Я вижу пример кода, например :: function() в VS C++, но я не могу понять, что это значит.

Я понимаю, что :: используется для доступа к функции-члену из внешнего класса, но я видел примеры, где я не нахожу этот случай. Например, в следующем коде

// For painting in memory
class MemCanvas: public Canvas
{
public:
    MemCanvas (HDC hdc) 
        : Canvas (::CreateCompatibleDC (hdc))
    {}

    ~MemCanvas ()
    {
        ::DeleteDC(_hdc); 
    }
};

См. Функцию :: CreateCompatibleDC()! Я понимаю, что он определен в Windows.h, но как он определяется здесь, я не могу догадаться.

  • 7
    Unary :: относится к глобальному пространству имен.
  • 2
    NamespaceName::X и ClassName::X используются для доступа к члену пространства имен или класса. ::X используется для доступа к члену глобального пространства имен (безымянного пространства имен, которому принадлежит все в области видимости файла, если только оно явно не помещено в некоторое именованное пространство имен или класс)
Показать ещё 4 комментария
Теги:
winapi

1 ответ

1

:: ссылается на глобальное пространство имен.

В качестве префикса для вызова функции это означает, что это не функция-член, это глобальная функция пространства имен.

Вместе с соглашением об именах для функций Windows API он в значительной степени идентифицирует функцию Windows API как таковую. Читателю. Обычно там нет конфликтов имен, поэтому для компилятора это не обязательно: это просто устройство для общения с читателем кода.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню