ВУЗ:
Составители:
Рубрика:
124
21.5. Преобразование типов
Преобразование типов можно разделить на 4 группы:
1) стандартный к стандартному;
2) стандартный к абстрактному;
3) абстрактный к стандартному;
4) абстрактный к абстрактному.
Первые преобразования уже были нами рассмотрены. Преобразо-
вания второй группы основаны на использовании конструкторов – как
явном, так и неявном.
Снова рассмотрим касс complex:
class complex {
double re, im;
public: complex (double r = 0, double i = 0){ re = r; im = i ; }
. . .
};
Объявления вида
complex c1;
complex c2 (1.8);
complex c3 (1.2, 3.7);
обеспечивают создание комплексных чисел.
Но конструктор может вызываться и неявно, в том случае, когда в
выражении должен находиться операнд типа complex, а на самом деле
присутствует операнд типа double:
complex operator + (complex & op, complex & op2 );
complex operator – (complex & op, complex & op2 );
complex operator * (complex & op, complex & op2 );
complex operator / (complex & op, complex & op2 );
complex operator – (complex & op ); // Унарный минус.
complex res;
res = – (c1 + 2) * c2 / 3 + .5 * c3;
Интерпретация, например, выражения –(c1 + 2) будет следующей:
operator –((operator + (c1, complex ( double (2)))).
При выполнении этого выражения неявные вызовы конструкторов
создадут временные константы типа complex: (2.0, 0.0), (3.0, 0.0),
(4.5, 0.0), которые будут уничтожены сразу же после того, как в них от-
Страницы
- « первая
- ‹ предыдущая
- …
- 120
- 121
- 122
- 123
- 124
- …
- следующая ›
- последняя »
