Бьерн Страуструп - Язык программирования С++. Вступление, глава 1
Страница 34. Преобразования типов


 

1.4.5  Преобразования типов

    Определяемые пользователем преобразования типа, например, такие, как
преобразование числа с плавающей точкой в комплексное, которое необходимо
для конструктора complex(double), оказались очень полезными в С++.
Программист может задавать эти преобразования явно, а может полагаться на
транслятор, который выполняет их неявно в том случае, когда они необходимы
и однозначны:

          complex a = complex ( 1 );
          complex b = 1;      // неявно: 1 -> complex ( 1 )
          a = b + complex ( 2 );
          a = b + 2;          // неявно: 2 -> complex ( 2)

    Преобразования типов нужны в С++ потому, что арифметические операции
со смешанными типами являются нормой для языков, используемых в числовых
задачах. Кроме того, большая часть пользовательских типов, используемых
для "вычислений" (например, матрицы, строки, машинные адреса) допускает
естественное преобразование в другие типы (или из других типов).

    Преобразования типов способствуют более естественной записи программы:

      complex a = 2;
      complex b = a + 2;  // это означает: operator + ( a, complex ( 2  ))
      b = 2 + a;          // это означает: operator + ( complex ( 2 ), a )

    В обоих случаях для выполнения операции "+" нужна только одна функция,
а ее параметры единообразно трактуются системой типов языка. Более того,
класс complex описывается так, что для естественного и беспрепятственного
обобщения понятия числа нет необходимости что-то изменять для целых чисел.

 
« Предыдущая статья   Следующая статья »