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

R.12.3 Преобразования

Преобразования объектов класса можно задать с помощью конструкторов

или функций преобразования.

Такие преобразования, обычно называемые пользовательскими,

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

($$R.4). Например, функцию с формальным параметром типа X можно

вызывать не только с параметром типа X, но и параметром типа T,

если существует преобразование типа T в X. Пользовательские

преобразования применяются в тех же ситуациях, что и стандартные:

преобразование инициализаторов ($$R.8.4), параметров функции

($$R.5.2.2), возвращаемых функцией значений ($$R.6.6.3, $$R.8.2.5),

выражений фактических параметров ($$R.5), выражений, управляющих

циклом и выбором операторов ($$R.6.4,$$R.6.5) и явные операции

преобразования типа ($$R.5.2.3, $$R.5.4).

Пользовательские преобразования применяются только в случае

их однозначности ($$R.10.1.1, $$R.12.3.2). Преобразования проходят

проверку на соответствие правилам доступа ($$R.11). Как всегда

проверка доступа осуществляется после разрешения неоднозначности

($$R.10.4).

Применение преобразований при вызове функции рассматривается на

примерах, приведенных ниже, а также обсуждается в $$R.13.2.