683.14K
Category: programmingprogramming

Язык С++. Операторы преобразования типов

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:
English     Русский Rules