R.9.3.1 Указатель this

R.9.3.1 Указатель this

В нестатической (§R.9.3) функции-члене служебное слово this обозначает указатель на объект, с которым эта функция вызывалась. В функции-члене класса X тип this есть X *const, если только функция-член не описана со спецификацией const или volatile; для этих случаев this имеет тип const X *const или volatile X *const соответственно. Если функция описана с указанием const и volatile, то тип this будет const volatile X *const, см. также §R.18.3.3. Приведем пример:

struct s {

 int a;

 int f() const;

 int g() { return a++; }

 int h() const { return a++; } // ошибка

};

int s::f() const { return a; }

Операция a++ в теле функции s::h ошибочна, поскольку с ее помощью делается попытка изменить объект (часть его), с которым вызывалась функция s::h(). Это недопустимо для функции-члена, описанной со спецификацией const, т.к. this является указателем на const, иными словами, *this имеет спецификацию const.

Функция-член const (т.е. функция-член, описанная со спецификацией const) может вызываться как для объектов const, так и для объектов без спецификации const, тогда как функция-член без спецификации const может вызываться только для объектов без спецификации const, например:

void k(s& x, const s& y)

{

 x.f();

 x.g();

 y.f();

 y.g(); // ошибка

}

Здесь вызов y.g() является ошибкой, т.к. y есть const, а s::g() - функция-член без спецификации const, которая может изменять (и изменяет) объекты, для которых она вызывалась.

Аналогично, только функция-член volatile (т.е. функция-член, описанная со спецификацией volatile) может вызываться для объектов со спецификацией volatile. Функция-член может быть одновременно const и volatile.

Для объектов const или volatile могут вызываться конструкторы (§R.12.1) и деструкторы (§R.12.4). Конструкторы (§R.12.1) и деструкторы (§R.12.4) нельзя описывать со спецификациями const или volatile.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг:

Предметный указатель

Из книги автора

Предметный указатель AASCII-Art 274 avast! 251AVG Anti-Virus Free 11BBittorrent 12, 167CCAPTCHA 114CDBurnerXP 245Crack 272CuteFTP 12 diz 273Download Master 11— докачка файлов 124— загрузка файла 71, 75 = с FTP 97— зеркала закачек 73 ° поиск 74— интеграция в браузер 70— настройка 64 0 обзор 63— пакетная закачка 78— просмотр ZIP-архива


Предметный указатель

Из книги автора

Предметный указатель AADSL-сплиттер 116Bbash 274CCedega 183ClamAV 310DD4X 145DirectX 182Downloader for X 136, 145EEasyTAG 162eMule 137Evolution 150FFirefox 144flashplugin-nonfree 144FTP-клиент 147GgFTP 136, 149GNOME-PPP 137GRUB 29KKino 161NNautilus 18NTFS-раздел 88OOpenOffice.org Writer 197PProFTPD 320RRealplayer 160TTransGaming 183VVMware 182WWeb-сервер 311Wine 182ААнтивирус 310Аппаратные сбои 282, 284ГГруппа


Предметный указатель

Из книги автора

Предметный указатель А Анкета кандидата, 41Анкетирование, 91Справочник типовых анкет, 91Группа анкет, 92Редактирование анкеты, 93Справочник типовых вопросов, 94Группа вопросов, 94Редактирование вопроса,


Алфавитный указатель

Из книги автора

Алфавитный указатель Адаптация… 3.1.5 сАлгоритм… 2.1, 3.1.5 сАссоциация пользователей… 2.2Вариант… 3.1.2 b, 3.1.3 а, 4.2.3Версия… 3.1.2 b, 3.1.2 fВозможность… 3.3.2Восстановление при ошибках… 3.1.4Выполнение программы… 4.2.3 bВычислительная система… 4.1.2, 4.2.3, 4.2.3 а, 4.4Граничное значение… 3.1.2.1 f,


Предметный указатель

Из книги автора

Предметный указатель A, CADSL-модем 5Cookie 207FFacebook 106Firewall 210FM-диапазон 176O, S, TOpenID 106Skype 126, 127Twitter 106, 124U, WUSB-модем 5, 6USB-накопитель 203WebMoney.Check 138, 140ААвтозаполнение 26Авторизация 149Авторские права 188, 190Адресная книга 74, 79Адресная строка браузера 18, 26Аккаунт 106, 108, 149Активное содержимое


Предметный указатель

Из книги автора

Предметный указатель Б«Бесконечная лестница» 146Болтовое соединение 105ВВид 8Винтовое соединение 107Вращение 208Втулка 86Выбор объектов 13ГГайка 108Геометрический калькулятор 34ДДерево модели 33Дерево построения документа 32Деталь 25, 61Дуга окружности 11ИИзделие 61Изображение


4.4.1. Указатель мыши

Из книги автора

4.4.1. Указатель мыши Основное внимание при работе с мышью уделяется ее указателю. Обычно он имеет вид стрелки, но в зависимости от ситуации (рис. 33) может принимать другие значения. Например, когда система занята и нужно подождать некоторое время, пока компьютер завершит


Предметный указатель

Из книги автора

Предметный указатель 33G 124, 147, 150AADSL 121, 125, 130ADSL-модем 130 Asus 26CCompaq 26Cookies 172DDirectX 13DSL 125DVD-студия Windows 296 EEDGE 123, 147, 150FFujitsu-Siemens 26GGericom 26Google Images 212Google News 214GPRS 123, 147, 148, 149GSM 147HHTTP 156IIBM 26 ICQ 200IMAP 174 Internet Explorer 157Ipconfig 142IPSec 245ISO-образ 14, 299JJunction points 85, 94NNick 222NMT 146NTFS, точки разветвления 85OOpenOffice Writer 374Outlook


Предметный указатель

Из книги автора

Предметный указатель AAlcohol 120 % 214CCD/DVD-ROM 17FFirewall 25GGoogle Chrome 319IIBM PC-совместимые компьютеры 21ICQ 380 IMAP 325Internet Explorer 8— cookies-файлы 308— автозаполнение 313— безопасность 304— быстрые вкладки 292— вкладки 277— домашняя страница 302— избранное 295— кодировка 294— конфиденциальность


Предметный указатель

Из книги автора

Предметный указатель AAlmagest Pathfinder 179Almarect 181Almatext 180TTiming Solution 179ААпогей Луны 139Аспектная линейка 150А-спектры 168Аспекты 29, 54, 85, 93• гармоничные 55• квадратура (90°) 55• квинконс (150°) 56• мажорные 56• минорные 56• напряженные 55• оппозиция (180°) 55, 56• полуквадратура (45°)


Именной указатель

Из книги автора

Именной указатель А Абрамов А. А. 47Айзенберг Г. З. 248Аккуратнов Н. М. 269Акушский И. Я. 36Александриди Т. М. 85, 87, 95, 98, 99, 101, 248Александров А. П. 191Александров В. В. 120, 121, 250Алексий I 7Амбарцумян В. А. 96Амосов Н. М. 208, 290Андроников И. 39Анисимов Б. В. 255Антонов В. С. 124Аристотель 256, 257Арлазаров