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

R.5.5 Операции указатель-на-член

Операции указатель-на-член применяются слева направо.

выражение-pm:

выражение-приведения

выражение-pm .* выражение-приведения

выражение-pm ->* выражение-приведения

Бинарная операция .* связывает свой второй операнд, который должен

иметь тип "указатель на член класса T", с первым операндом, имеющим

тип класс T или такой класс, для которого T является однозначно

определенным и достижимым базовым классом. Результатом будет объект

или функция с типом, задаваемым вторым операндом.

Бинарная операция ->* связывает свой второй операнд, который должен

иметь тип "указатель на член класса T", с первым операндом, имеющим

тип "указатель на T" или тип "указатель на класс, для которого T

является однозначно определенным и достижимым базовым классом".

Результатом будет объект или функция с типом, задаваемым вторым

операндом.

Если результат .* или ->* есть функция, то его можно использовать

только в качестве операнда операции вызова функции (), например,

операция

(ptr_to_obj->*ptr_to_mfct)(10);

приводит к вызову функции-члена, обозначенной ptr_to_mfct, для

объекта, на который настроен указатель ptr_to_obj. Результат

операции .* или ->* является адресом, если второй операнд есть

адрес.