Бьерн Страуструп - Язык программирования С++. Главы 5-8 Страница 14. Уточнение имени члена
|
Страница 14 из 88
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) // ... } // ... }
|