Похожие презентации:
Язык С++. Операторы преобразования типов
1.
Объектно-ориентированноепрограммирование (ООП).
Язык С++
Операторы
преобразования
типов
2.
Операторы преобразования типов• Условно, все преобразования типов можно
разделить на четыре основные группы:
• Стандартный к стандартному — эти
преобразования уже были нами подробно
рассмотрены в одном из уроков.
• Стандартный к абстрактному —
преобразования этой группы основаны на
использовании конструкторов.
• Абстрактный к стандартному
• Абстрактный к абстрактному
3.
Операторы преобразования типов• Для преобразования абстрактного типа к
стандартному или абстрактного к абстрактному
в С++ существует средство — функция,
выполняющая преобразование типов, или
оператор-функция преобразования типов. Она
имеет следующий синтаксис:
4.
Операторы преобразования типов• Эта функция выполняет определенное
пользователем преобразование типа Class к
типу type. Эта функция должна быть членом
класса Class и не иметь аргументов. Кроме того,
в ее объявлении не указывается тип
возвращаемого значения.
• Обращение к этой функции может быть как
явным, так и неявным. Для выполнения явного
преобразования можно использовать как
традиционную, так и "функциональную" форму.
5.
Операторы преобразования типов. Пример6.
Операторы преобразования типов• Операторы преобразования (conversion operator)
определяют преобразование объекта одного типа в
другой. Они имеют следующий общий синтаксис:
• В данном случае тип - это тот тип, в который надо
преобразовать. В качестве типа нельзя использовать
массив или функцию, хотя указатель на функцию
вполне можно использовать.
• Операции преобразования не должны изменять
преобразуемый объект, поэтому функции
операторов определяются с ключевым словом
const.
7.
Например, определим оператор преобразованияиз типа класса в тип int:
8.
• В одном случае в классе Counter определеноператор преобразования от типа Counter к типу
int:
• Поэтому в программе мы можем использовать
неявные преобразования от Counter к int:
9.
Явные преобразования• Операции преобразования также могут быть
явными. В этом случае операторы определяются
с ключевым словом explicit. А при их
применении необходимо использовать
операцию приведения типов:
10.
Явные преобразования11.
• Здесь в классе Counter определен операторпреобразования объекта из типа Counter в тип
Clock, то есть по сути из секунд необходимо
получить часы, минуты и секунды. Этот оператор
определен как явная операция преобразования:
• Поэтому при использовании данной операции
необходимо перед преобразуемым типом
ставить операцию приведения - в скобках
указывается тип, к которому надо пребразовать
объект:
12.
Также можно определить обратное образование из типа Clock в типCounter. Для этого можно определить конструктор в классе Counter,
который применяет ссылку на объект Clock:
Программирование