Преобразования типов, определенных в программе
В языке Си++ можно определить гораздо больше типов, чем в Си. Казалось бы, и правила преобразования новых типов должны стать намного сложнее. К счастью, этого не произошло. Все дело в том, что при определении классов программист может контролировать, какие преобразования допустимы и как они выполняются при преобразовании в данный тип или из данного типа в другой.
Прежде всего, выполнение тех или иных операций с аргументами разных типов можно регулировать с помощью методов и функций с разными аргументами. Для того чтобы определить операцию сложения комплексного числа с целым, нужно определить две функции в классе Complex:
class Complex { . . . friend Complex operator+(const Complex x, int y); friend Complex operator+(int y, const Complex x); };
При наличии таких функций никаких преобразований типа не производится в следующем фрагменте программы:
int x; Complex y; . . . Complex z = x + y;
Тем не менее, в других ситуациях преобразования типа производятся. Прежде всего, компилятор старается обойтись стандартными преобразованиями типа. Если их не хватает, то выполняются преобразования либо с помощью конструкторов, либо с помощью определенных программистом операций преобразования.
Задав конструктор класса, имеющий в качестве аргумента величину другого типа, программист тем самым определяет правило преобразования:
class Complex { public: // неявное правило преобразования // из целого типа в тип Complex Complex(int x); };
Операции преобразования имеют вид:
operator имя_типа ();
Например, преобразование из комплексного числа в целое можно записать так:
class Complex { public: // операция преобразования из типа // Complex в целый тип operator int(); };
При записи:
Complex cmpl; int x = cmpl;
будет вызвана функция operator int().
on_load_lecture()
|
/p>
|
/p>
|
вопросы |
учебники
|
для печати и PDA
Курсы | Учебные программы | Учебники | Новости | Форум | Помощь
Телефон: +7 (495) 253-9312, 253-9313, факс: +7 (495) 253-9310, email: info@intuit.ru 2003-2007, INTUIT.ru::Интернет-Университет Информационных Технологий - дистанционное образование |