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

We use cookies. Read the Privacy and Cookie Policy

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.