Бьярн Страустрап - Справочное руководство по C++

Тут можно читать онлайн Бьярн Страустрап - Справочное руководство по C++ - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-programming. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Справочное руководство по C++
  • Автор:
  • Жанр:
  • Издательство:
    неизвестно
  • Год:
    неизвестен
  • ISBN:
    нет данных
  • Рейтинг:
    5/5. Голосов: 81
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 100
    • 1
    • 2
    • 3
    • 4
    • 5

Бьярн Страустрап - Справочное руководство по C++ краткое содержание

Справочное руководство по C++ - описание и краткое содержание, автор Бьярн Страустрап, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

Справочное руководство по C++ - читать онлайн бесплатно полную версию (весь текст целиком)

Справочное руководство по C++ - читать книгу онлайн бесплатно, автор Бьярн Страустрап
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Пустой указатель (0) преобразуется сам в себя.

Пока еще неопределенный класс можно использовать в операции приведения указателя, в этом случае никаких допущений о структуре класса не делается (§R.10.1).

Любой объект можно явно преобразовать к типу ссылки X&, если указатель на этот объект можно явно преобразовать в тип X*. В результате приведения к ссылке не происходит вызовов конструкторов или функций преобразований. Преобразование ссылки на базовый класс в ссылку на производный класс рассматривается аналогично преобразованию указателя на базовый класс в указатель на производный класс, учитывая вопросы однозначности, виртуальных классов и т.д.

Результатом приведения к ссылке является адрес, в отличие от всех остальных приведений. Результат приведения указателя или ссылки настроен на тот же объект, что и исходное выражение без операции приведения.

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

Указатель на функцию одного типа можно явно преобразовать в указатель на функцию другого типа. Результат вызова функции с помощью указателя на функцию, тип которой отличен от типа, использованного при определении первой функции, неопределен (см. так же §R.4.6).

Объект или значение можно преобразовать в объект типа класс только при условии, что определен подходящий конструктор или операция преобразования (§R.12.3).

Указатель на член можно явно преобразовать в указатель на другой член, если оба участвующих типа являются типами указателей на члены одного класса, или, если оба типа являются указателями на функцию-член классов, один из которых получается как однозначное производное от другого (§R.4.8).

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

Указатель на объект типа со спецификацией volatile можно привести к указателю на объект типа без volatile. В результате получится указатель, настроенный на исходный объект. Объект типа с volatile или ссылку на такой объект можно привести к ссылке на объект с типом без volatile.

R.5.5 Операции указатель-на-член

Операции указатель-на-член применяются слева направо.

выражение-pm:

выражение-приведения

выражение-pm .* выражение-приведения

выражение-pm -›* выражение-приведения

Бинарная операция .* связывает свой второй операнд, который должен иметь тип "указатель на член класса T", с первым операндом, имеющим тип класс T или такой класс, для которого T является однозначно определенным и достижимым базовым классом. Результатом будет объект или функция с типом, задаваемым вторым операндом.

Бинарная операция -›* связывает свой второй операнд, который должен иметь тип "указатель на член класса T", с первым операндом, имеющим тип "указатель на T" или тип "указатель на класс, для которого T является однозначно определенным и достижимым базовым классом". Результатом будет объект или функция с типом, задаваемым вторым операндом.

Если результат .* или -›* есть функция, то его можно использовать только в качестве операнда операции вызова функции (), например, операция

(ptr_to_obj-›*ptr_to_mfct)(10);

приводит к вызову функции-члена, обозначенной ptr_to_mfct, для объекта, на который настроен указатель ptr_to_obj. Результат операции .* или -›* является адресом, если второй операнд есть адрес.

R.5.6 Мультипликативные операции

Мультипликативные операции *, /, и % выполняются слева направо.

Мультипликативное-выражение:

выражение-pm

мультипликативное-выражение * выражение-pm

мультипликативное-выражение / выражение-pm

мультипликативное-выражение % выражение-pm

Операнды операций * и / должны иметь арифметический тип, операнды для % должны быть целочисленного типа. Обычные арифметические преобразования (§R.4.5) производятся над операндами и определяют тип результата.

Бинарная операция * обозначает умножение.

Бинарная операция / вычисляет частное, а бинарная операция % вычисляет остаток от деления первого выражения на второе. Если второй операнд у / или % есть 0, результат неопределен, иначе (a/b)*b + a%b должно равняться a. Если оба операнда неотрицательны, то таким же будет и результат, в противном случае знак результата определяется реализацией.

R.5.7 Аддитивные операции

Аддитивные операции + и - выполняются слева направо, при этом происходят обычные арифметические преобразования (§R.4.5) операндов арифметического типа.

аддитивное-выражение:

мультипликативное-выражение

аддитивное выражение + мультипликативное-выражение

аддитивное-выражение - мультипликативное-выражение

Операнды должны быть арифметического типа или типа указателя. Результатом операции + является сумма операндов. Можно складывать указатель на объект в массиве и значение любого целочисленного типа. Результатом будет указатель того же типа, что и исходный указатель, но он будет настроен на другой объект массива с заданным смещением от исходного объекта. Так, если P есть указатель на объект массива, выражение P+1 является указателем на следующий объект массива. Если же получившийся в результате сложения указатель вышел за границы массива, результат будет неопределенным, кроме случая, когда указатель настроен на первый адрес больший верхней границы массива.

Результатом операции - будет разность операндов. Значение любого целочисленного типа можно вычитать из указателя, при этом применяются те же преобразования, что и для операции +.

Никакие другие сочетания типов для указателей не допустимы.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Бьярн Страустрап читать все книги автора по порядку

Бьярн Страустрап - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Справочное руководство по C++ отзывы


Отзывы читателей о книге Справочное руководство по C++, автор: Бьярн Страустрап. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x