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)
                // ...
             }
             // ...
           }

Назад  |  Вперёд


OtDiatlovaOU
К началу книги

Оформление и дизайн книги OtDiatlovaOU.
Вся книга, архив.