Введение в язык Си++

         

Уточнение*1 Имени Члена


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

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

В x::setm() имя параметра m прячет член m, поэтому единственный способ сослаться на член - это использовать его уточненное имя x::m. Операнд в левой части :: должен быть именем класса.

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

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

int my_file::open(char* name, char* spec) { // ... if (::open(name,flag)) { // использовать open() из UNIX(2) // ... } // ... }



Содержание раздела