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

Интервал:

Закладка:

Сделать

По исчерпании ввода следует не забыть вывести данные последней транзакции. Для этого после цикла whileиспользуется еще один вызов функции print().

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

Упражнение 7.1. Напишите версию программы обработки транзакций из раздела 1.6 с использованием класса Sales_data, созданного для упражнений в разделе 2.6.1.

картинка 2067.1.2. Определение пересмотренного класса Sales_data

У пересмотренного класса будут те же переменные-члены, что и у версии, определенной в разделе 2.6.1: член типа stringпо имени bookNo, представляющий ISBN, член типа unsignedпо имени units_sold, представляющий количество проданных экземпляров книги, и член типа doubleпо имени revenue, представляющий общий доход от этих продаж.

Как уже упоминалось, у класса будут также две функции-члена, combine()и isbn(). Кроме того, предоставим классу Sales_dataдругую функцию-член, чтобы возвращать среднюю цену, по которой были проданы книги. Эта функция, назовем ее avg_price(), не предназначена для общего использования. Она будет частью реализации, а не интерфейса.

Функции-члены определяют (см. раздел 6.1) и объявляют (см. раздел 6.1.2) как обычные функции. Функции-члены должны быть объявлены в классе, но определены они могут быть непосредственно в классе или вне тела класса. Функции, не являющиеся членами класса, но являющиеся частью интерфейса, как функции add(), read()и print(), объявляются и определяются вне класса.

С учетом вышеизложенного напишем пересмотренную версию класса Sales_data:

struct Sales_data {

// новые члены: операции с объектами класса Sales_data

std::string isbn() const { return bookNo; }

Sales_data& combine(const Sales_data&);

double avg_price() const;

// те же переменные-члены, что и в p. 2.6.1

std::string bookNo;

unsigned units_sold = 0;

double revenue = 0.0;

};

// функции интерфейса класса Sales_data, не являющиеся его членами

Sales_data add(const Sales_data&, const Sales_data&);

std::ostream &print(std::ostream&, const Sales_data&);

std::istream &read(std::istream&, Sales_data&);

Язык программирования C Пятое издание - изображение 207Функции, определенные в классе, неявно являются встраиваемыми (см. раздел 6.5.2).

Определение функций-членов

Хотя каждый член класса должен быть объявлен в самом классе, тело функции-члена можно определить либо в, либо вне тела класса. Функция isbn()определяется в классе Sales_data, а функции combine()и avg_price()вне его.

Сначала рассмотрим функцию isbn(), возвращающую строку и имеющую пустой список параметров:

std::string isbn() const { return bookNo; }

Как и у любой функции, тело функции-члена является блоком. В данном случае блок содержит один оператор return, возвращающий значение переменной-члена bookNoобъекта класса Sales_data. Интересно, как эта функция получает объект, член bookNoкоторого следует выбрать?

Указатель this

Давайте снова рассмотрим вызов функции-члена isbn():

total.isbn()

Здесь для вызова функции-члена isbn()объекта totalиспользуется точечный оператор (см. раздел 4.6).

За одним исключением, рассматриваемым в разделе 7.6, вызов функции-члена осуществляется от имени объекта. Когда функция isbn()обращается к члену класса Sales_data(например, bookNo), она неявно обращается к членам того объекта, из которого была вызвана. В этом вызове функции isbn(), когда она возвращает значение члена bookNo, речь идет о члене total.bookNo.

Функция-член способна обратиться к тому объекту, из которого она была вызвана, благодаря дополнительному неявному параметру this. Когда происходит вызов функции-члена, указатель thisинициализируется адресом объекта, из которого была вызвана функция. Рассмотрим следующий вызов:

total.isbn()

Здесь компилятор присваивает адрес объекта totalуказателю thisи неявно передает его как параметр функции isbn(). Компилятор как бы переписывает этот вызов так:

// псевдокод, в который преобразуется вызов функции-члена

Sales_data::isbn(&total)

Этот код вызывает функцию-член isbn()класса Sales_data, передав адрес объекта total.

В функции-члене можно обратиться непосредственно к членам объекта, из которого она была вызвана. Для использования членов объекта, на который указывает указатель this, можно не использовать оператор доступа к члену. Любое непосредственное использование члена класса подразумевает использование указателя this. Таким образом, когда функция isbn()использует переменную bookNo, она неявно использует член объекта, на который указывает указатель this. Это аналогично синтаксису this->bookNo.

Параметр thisопределяется неявно и автоматически. Кроме того, определить параметр или переменную по имени thisсамому нельзя, но в теле функции-члена его использовать можно. Вполне допустимо, хоть и не нужно, определить функцию isbn()так:

std::string isbn() const { return this->bookNo; }

Поскольку указатель thisвсегда предназначен для обращения к "этому" объекту, он является константным (см. раздел 2.4.2). Нельзя изменить адрес, хранящийся в указателе this.

Константные функции-члены

Еще одним важным моментом функции-члена isbn()является ключевое слово const, расположенное за списком параметров. Оно применяется для модификации типа неявного указателя this.

По умолчанию указатель thisимеет тип константного указателя на неконстантную версию типа класса. Например, типом по умолчанию указателя thisв функции-члене Sales_dataявляется Sales_data *const. Хоть указатель thisи неявен, он подчиняется обычным правилам инициализации, согласно которым (по умолчанию) нельзя связать указатель thisс константным объектом (см. раздел 2.4.2). Следствием этого факта, в свою очередь, является невозможность вызвать обычную функцию-член для константного объекта.

Если бы функция isbn()была обычной и если бы указатель thisбыл обычным параметром типа указателя, то мы объявили бы его как const Sales_data *const. В конце концов, тело функции isbn()не изменяет объект, на который указывает указатель this; таким образом, эта функция стала бы гибче, если бы указатель thisбыл указателем на константу (см. раздел 6.2.3).

Однако указатель this неявный и не присутствует в списке параметров, поэтому нет места, где можно было бы указать, что он должен быть указателем на константу. Язык решает эту проблему, позволяя разместить ключевое слово constпосле списка параметров функции-члена. Это означает, что указатель thisявляется указателем на константу. Функции-члены, использующие ключевое слово constтаким образом, являются константными функциями-членами (const member function).

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

Интервал:

Закладка:

Сделать


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

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




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


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


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

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