Шаг 39.
Библиотека STL.
Новые операторы преобразования типа

    На этом шаге мы рассмотрим использование новых операторов преобразования типа.

    Чтобы программисты могли более четко выразить смысл явного преобразования типа с одним аргументом, в стандарт были включены четыре новых оператора.

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

    Обратите внимание - новые операторы преобразования типа определены только для одного аргумента. Рассмотрим следующий пример:

static_cast<Fraction>(15,100)       // Ошибка: создается Fraction (100)

    Команда работает совсем не так, как можно было бы ожидать. Вместо того чтобы инициализировать временный объект дроби с числителем 15 и знаменателем 100, она инициализирует временный объект с единственным значением 100. Запятая в данном случае не является разделителем аргументов, а интерпретируется как оператор, который объединяет два выражения и возвращает второе из них. Правильным способом "преобразования" величин 15 и 100 в дробь по-прежнему остается следующая команда:

Fraction(15,100)    // Правильно, создает Fraction(15,100)

    На следующем шаге мы рассмотрим инициализацию константных статических членов класса.




Предыдущий шаг Содержание Следующий шаг