|
||||
|
5.4.2 Уточнение* Имени Члена – * Иногда называется также квалификацией. (прим. перев.) Иногда полезно делать явное различие между именами члнов класса и прочими именами. Для этого используется операция ::, «разрешения области видимости»: 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) // ... *) // ... *) |
|
||