Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Новые операторы приведения типов




Оператор приведения типов языка С, по мнению Бьярни Страустрапа являлся слишком неопределённым, возможны были ошибки. Бьярни – основоположник С++ (см. Книгу Стивена Прата). Он вводит 4 типа операторов приведения типов:

· static_cast

· const_cast

· reinterpret_cast

· dynamic_cast

Приведение static_cast

Синтаксис

static_cast <имя_типа>(<выражение>)

Преобразование к типу <имя_типа> базируется только на типе, соответствующем <выражению> без run-time-проверки. Оператор не вполне безопасен в предположении, что программист знает, что делает. Преобразования выполняются в пределах иерархии классов (вниз или вверх, но не безопасно).

Пример

class B{…};

class D: public B(…);

……………………………………..

void f(B *pb, D *pd)

{

D *pd2 = static_cast <D *>(pb); // Преобразование допустимо, но небезопасно, если pb

// действительно ссылается на объект класса B, поскольку в дальнейшем к pd2 могут

// обращаться как к указателю на объекты класса D

B *pb2 = static_cast <B *>(pd); // Вполне безопасно, поскольку pd может ссылаться на

// классы B или D

………………………………………

}

Возвращаемое значение оператором – NULL, если нет связи в пределах иерархии типов или невозможно выполнить обычное стандартное преобразование типов подобное float<->double, int<->char и т.л.

 






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных