logo
volkov / C++ / Бьерн Страуструп-Справочное руководство по С++

R.4.8 Указатели на члены

Всюду, где указатели на члены ($$R.8.2.3) инициализируются,

присваиваются, сравниваются или используются иным образом,

могут происходить следующие преобразования:

Константное выражение ($$R.5.19), которое сводится к нулю,

преобразуется в указатель на член. Гарантируется, что его

значение будет отлично от любых других указателей на члены.

Указатель на член данного класса можно преобразовать в

указатель на член производного от данного класса, при условии,

что допустимо обратное преобразование от указателя на член производного

класса в указатель член базового класса, и что оно выполнимо

однозначным образом ($$R.10.1.1).

Правило преобразования указателей на члены (т.е. от указателя на

член базового класса к указателю на член производного класса) выглядит

перевернутым, если сравнивать его с правилом для указателей на

объекты (т.е. от указателя на производный объект к указателю на

базовый объект) ($$R.4.6, $$R.10). Это необходимо для гарантии

надежности типов.

Отметим, что указатель на член не является указателем на объект

или указателем на функцию и правила преобразований таких указателей

не применимы для указателей на члены. В частности указатель на член

нельзя преобразовать в void*.