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

Содержание

Слайд 2

Операторы преобразования типов Условно, все преобразования типов можно разделить на четыре

Операторы преобразования типов

Условно, все преобразования типов можно разделить на четыре основные

группы:
Стандартный к стандартному — эти преобразования уже были нами подробно рассмотрены в одном из уроков.
Стандартный к абстрактному — преобразования этой группы основаны на использовании конструкторов.
Абстрактный к стандартному
Абстрактный к абстрактному
Слайд 3

Операторы преобразования типов Для преобразования абстрактного типа к стандартному или абстрактного

Операторы преобразования типов

Для преобразования абстрактного типа к стандартному или абстрактного к

абстрактному в С++ существует средство — функция, выполняющая преобразование типов, или оператор-функция преобразования типов. Она имеет следующий синтаксис:
Слайд 4

Операторы преобразования типов Эта функция выполняет определенное пользователем преобразование типа Class

Операторы преобразования типов

Эта функция выполняет определенное пользователем преобразование типа Class к

типу type. Эта функция должна быть членом класса Class и не иметь аргументов. Кроме того, в ее объявлении не указывается тип возвращаемого значения.
Обращение к этой функции может быть как явным, так и неявным. Для выполнения явного преобразования можно использовать как традиционную, так и "функциональную" форму.
Слайд 5

Операторы преобразования типов. Пример

Операторы преобразования типов. Пример

Слайд 6

Операторы преобразования типов Операторы преобразования (conversion operator) определяют преобразование объекта одного

Операторы преобразования типов

Операторы преобразования (conversion operator) определяют преобразование объекта одного типа

в другой. Они имеют следующий общий синтаксис:
В данном случае тип - это тот тип, в который надо преобразовать. В качестве типа нельзя использовать массив или функцию, хотя указатель на функцию вполне можно использовать.
Операции преобразования не должны изменять преобразуемый объект, поэтому функции операторов определяются с ключевым словом const.
Слайд 7

Например, определим оператор преобразования из типа класса в тип int:

Например, определим оператор преобразования из типа класса в тип int:

Слайд 8

В одном случае в классе Counter определен оператор преобразования от типа

В одном случае в классе Counter определен оператор преобразования от типа

Counter к типу int:
Поэтому в программе мы можем использовать неявные преобразования от Counter к int:
Слайд 9

Явные преобразования Операции преобразования также могут быть явными. В этом случае

Явные преобразования

Операции преобразования также могут быть явными. В этом случае операторы

определяются с ключевым словом explicit. А при их применении необходимо использовать операцию приведения типов:
Слайд 10

Явные преобразования

Явные преобразования

Слайд 11

Здесь в классе Counter определен оператор преобразования объекта из типа Counter

Здесь в классе Counter определен оператор преобразования объекта из типа Counter

в тип Clock, то есть по сути из секунд необходимо получить часы, минуты и секунды. Этот оператор определен как явная операция преобразования:
Поэтому при использовании данной операции необходимо перед преобразуемым типом ставить операцию приведения - в скобках указывается тип, к которому надо пребразовать объект: