Стенли Липпман - Язык программирования C++. Пятое издание

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

Стенли Липпман - Язык программирования C++. Пятое издание краткое содержание

Язык программирования C++. Пятое издание - описание и краткое содержание, автор Стенли Липпман, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru
Лучшее руководство по программированию и справочник по языку, полностью пересмотренное и обновленное под стандарт С++11!
Вы держите в руках новое издание популярного и исчерпывающего бестселлера по языку программирования С++, которое было полностью пересмотрено и обновлено под
. Оно поможет вам быстро изучить язык и использовать его весьма эффективными и передовыми способами. В соответствии с самыми передовыми и современными методиками изложения материала авторы демонстрируют использование базового языка и его стандартной библиотеки для разработки эффективного, читабельного и мощного кода.
С самого начала этой книги читатель знакомится со стандартной библиотекой С++, ее самыми популярными функциями и средствами, что позволяет сразу же приступить к написанию полезных программ, еще не овладев всеми нюансами языка. Большинство примеров из книги было пересмотрено так, чтобы использовать новые средства языка и продемонстрировать их наилучшие способы применения. Эта книга — не только проверенное руководство для новичков в С++, она содержит также авторитетное обсуждение базовых концепций и методик языка С++ и является ценным ресурсом для опытных программистов, особенно желающих побыстрей узнать об усовершенствованиях С++11.
Стенли Б. Липпман Жози Лажойе Барбара Э. Му • Узнайте, как использовать новые средства языка С++11 и стандартной библиотеки для быстрого создания надежных программ, а также ознакомьтесь с высокоуровневым программированием
• Учитесь на примерах, в которых показаны передовые стили программирования и методики проектирования
• Изучите принципы и узнайте почему язык С++11 работает именно так
• Воспользуйтесь множеством перекрестных ссылок, способных помочь вам объединить взаимосвязанные концепции и проникнуть в суть
• Ознакомьтесь с современными методиками обучения и извлеките пользу из упражнений, в которых подчеркиваются ключевые моменты, позволяющие избежать проблем
• Освойте лучшие методики программирования и закрепите на практике изученный материал
Исходный код примеров можно загрузить с веб-страницы книги на сайте издательства по адресу: http://www.williamspublishing.com

Язык программирования C++. Пятое издание - читать онлайн бесплатно полную версию (весь текст целиком)

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

Интервал:

Закладка:

Сделать

// константный объект

Как уже упоминалось в разделе 2.3.3, проще всего понять эти объявления, читая их справа налево. В данном случае ближе всего к имени curErrрасположен спецификатор const, означая, что сам объект curErrбудет константным. Тип этого объекта формирует остальная часть оператора объявления. Следующий символ оператора объявления, *, означает, что curErr— это константный указатель. И наконец, объявление завершает базовый тип, означая, что curErr— это константный указатель на объект типа int. Аналогично pip— это константный указатель на объект типа const double.

Тот факт, что указатель сам является константой, ничто не говорит о том, можем ли мы использовать указатель для изменения основного объекта. Возможность изменения объекта полностью зависит от типа, на который указывает указатель. Например, pip— это константный указатель на константу. Ни значение объекта, на который указывает указатель pip, ни хранящийся в нем адрес не могут быть изменены. С другой стороны, указатель curErrимеет простой, неконстантный тип int. Указатель curErrможно использовать для изменения значения переменной errNumb:

*pip = 2.72; // ошибка: pip - указатель на константу

// если значение объекта, на который указывает указатель curErr

// (т.е. errNumb), отлично от нуля

if (*curErr) {

errorHandler();

*curErr = 0; // обнулить значение объекта, на который

// указывает указатель curErr

}

Упражнения раздела 2.4.2

Упражнение 2.27. Какие из следующих инициализаций допустимы? Объясните почему.

(a) int i = -1, &r = 0; (b) int *const p2 = &i2;

(c) const int i = -1, &r = 0; (d) const int *const p3 = &i2;

(e) const int *p1 = &i2; (f) const int &const r2;

(g) const int i2 = i, &r = i;

Упражнение 2.28. Объясните следующие определения. Какие из них недопустимы?

(a) int i, *const cp; (b) int *p1, *const p2;

(c) const int ic, &r = ic; (d) const int *const p3;

(e) const int *p;

Упражнение 2.29. С учетом переменных из предыдущих упражнений, какие из следующих присвоений допустимы? Объясните почему.

(a) i = ic; (b) pi = p3;

(с) pi = ⁣ (d) p3 = ⁣

(e) p2 = pi; (f) ic = *p3;

картинка 422.4.3. Спецификатор constверхнего уровня

Как уже упоминалось, указатель — это объект, способный указывать на другой объект. В результате можно сразу сказать, является ли указатель сам константой и являются ли константой объекты, на которые он может указывать. Термин спецификатор constверхнего уровня (top-level const) используется для обозначения того ключевого слова const, которое объявляет константой сам указатель. Когда указатель способен указывать на константный объект, это называется спецификатор constнижнего уровня (low-level const).

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

int i = 0;

int *const pi = &i; // нельзя изменить значение pi;

// const верхнего уровня

const int ci = 42; // нельзя изменить ci; const верхнего уровня

const int *p2 = &ci; // нельзя изменить p2; const нижнего уровня

const int *const p3 = p2; // справа const верхнего уровня, слева нет

const int &r = ci; // const в ссылочных типах всегда нижнего уровня

картинка 43Различие между спецификаторами constверхнего и нижнего уровней проявляется при копировании объекта. При копировании объекта спецификатор constверхнего уровня игнорируется.

i = ci; // ok: копирование значения ci; спецификатор const верхнего

// уровня в ci игнорируется

p2 = p3; // ok: указываемые типы совпадают; спецификатор const верхнего

// уровня в p3 игнорируется

Копирование объекта не изменяет копируемый объект. Поэтому несущественно, является ли копируемый или копирующий объект константой.

Спецификатор constнижнего уровня, напротив, никогда не игнорируется. При копировании объектов у них обоих должны быть одинаковые спецификаторы constнижнего уровня, или должно быть возможно преобразование между типами этих двух объектов. Как правило, преобразование неконстанты в константу возможно, но не наоборот.

int *p = p3; // ошибка: p3 имеет const нижнего уровня, а p - нет

p2 = p3; // ok: p2 имеет то же const нижнего уровня, что и p3

p2 = &i; // ok: преобразование int* в const int* возможно

int &r = ci; // ошибка: невозможно связать обычную int& с

// объектом const int

const int &r2 = i; // ok: const int& можно связать с обычным int

У указателя p3есть спецификатор constнижнего и верхнего уровня. При копировании указателя p3можно проигнорировать его спецификатор constверхнего уровня, но не тот факт, что он указывает на константный тип. Следовательно, нельзя использовать указатель p3для инициализации указателя p, который указывает на простой (неконстантный) тип int. С другой стороны, вполне можно присвоить указатель p3указателю p2. У обоих указателей тот же тип (спецификатор constнижнего уровня). Тот факт, что p3— константный указатель (т.е. у него есть спецификатор constверхнего уровня), не имеет значения.

Упражнения раздела 2.4.3

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

const int v2 = 0;

int v1 = v2;

int *p1 = &v1, &r1 = v1;

const int *p2 = &v2, *const p3 = &i, &r2 = v2;

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

r1 = v2;

p1 = p2; р2 = p1;

p1 = p3; p2 = p3;

картинка 442.4.4. Переменные constexprи константные выражения

Константное выражение (constant expression) — это выражение, значение которого не может измениться и вычисляется во время компиляции. Литерал — это константное выражение. Константный объект, инициализируемый константным выражением, также является константным выражением. Вскоре мы увидим, что в языке есть несколько контекстов, требующих константных выражений.

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

Интервал:

Закладка:

Сделать


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

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




Язык программирования C++. Пятое издание отзывы


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


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

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