Язык программирования C++

Преобразования типов, определенных в программе


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

Прежде всего, выполнение тех или иных операций с аргументами разных типов можно регулировать с помощью методов и функций с разными аргументами. Для того чтобы определить операцию сложения комплексного числа с целым, нужно определить две функции в классе 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::Интернет-Университет Информационных Технологий - дистанционное образование



Содержание раздела