ВУЗ:
Составители:
Рубрика:
126
Эта функция выполняет определенное пользователем преобразо-
вание типа Class к типу type. Эта функция должна быть членом класса
Class и не иметь аргументов. Кроме того, в ее объявлении не указывает-
ся тип возвращаемого значения. Обращение к этой функции может быть
как явным, так и неявным. Для выполнения явного преобразования
можно использовать как традиционную, так и «функциональную» фор-
му.
Пример 1:
class X { int a, b;
public:
X (X & vx) { a = vx.a; b = vx.b; }
Х (int i, int j) { a = 2*i, b = 3*j; }
operator double () { return (a + b)/2.0; } // Преобразование
// абстрактного типа к стандартному. };
int i = 5;
double d1 = double (i); // Явное преобразование типа int к double;
double d2 = i ; // неявное преобразование int к double;
X xv (5, -8);
double d3 = double (xv); // явное преобразование типа Х к double;
double d4 = xv; // неявное преобразование Х к double.
Пример 2:
// Преобразование абстрактного типа к абстрактному.
class Y {
char * str1; // Строки str1 и str2 хранят символьное
char * str2; // представление целых чисел.
public:
Y (char *s1, char *s2): str1(s1), str2 (s2){}
operator X() { return X (atoi (str1), atoi (str2));}
};
. . .
Y yvar (“12“,“-25“);
X xvar = yvar;
При создании переменной xvar перед вызовом конструктора ко-
пирования X::X(X&) будет выполнено неявное преобразование значе-
ния переменной yvar к типу Х. Это же преобразование в явном виде
может выглядеть так:
X xvar = X (yvar);
X xvar = (X) yvar;
Страницы
- « первая
- ‹ предыдущая
- …
- 122
- 123
- 124
- 125
- 126
- …
- следующая ›
- последняя »
