Бьерн Страуструп - Язык программирования С++. Главы 5-8
Страница 14. Уточнение имени члена



5.4.2 Уточнение имени члена

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

             class X {
                int m;
             public:
                int readm() const { return m; }
                void setm(int m)  { X::m = m; }
            };

      В функции X::setm() параметр m скрывает член m, поэтому к члену
  можно обращаться, только используя уточненное имя X::m. Правый
  операнд операции :: должен быть именем класса.
      Начинающееся с :: имя должно быть глобальным именем. Это особенно
  полезно при использовании таких распространенных имен как read, put,
  open, которыми можно обозначать функции-члены, не теряя возможности
  обозначать ими же функции, не являющиеся членами.
  Например:

            class my_file {
               // ...
            public:
               int open(const char*, const char*);
            };

            int my_file::jpen(const char* name, const char* spec)
            {
              // ...
              if (::open(name,flag)) {  // используется open() из UNIX(2)
                 // ...
              }
              // ...
           }

 
« Предыдущая статья   Следующая статья »