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

Интервал:

Закладка:

Сделать

Переопределив класс Sales_dataеще раз, получаем следующее:

class Sales_data {

public: // добавлен спецификатор доступа

Sales_data() = default;

Sales_data(const std::string &s, unsigned n, double p):

bookNo(s), units_sold(n), revenue(p*n) { }

Sales_data(const std::string &s): bookNo(s) { }

Sales_data(std::istream&);

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

Sales_data &combine(const Sales_data&);

private: // добавлен спецификатор доступа

double avg_price() const

{ return units_sold ? revenue/units_sold : 0; }

std::string bookNo;

unsigned units_sold = 0;

double revenue = 0.0;

};

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

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

Использование ключевых слов classи struct

Было также внесено еще одно изменение: в начале определения класса использовано ключевое слово class, а не struct. Это изменение является чисто стилистическим; тип класса можно определить при помощи любого из этих ключевых слов. Единственное различие между ключевыми словами structи classв заданном по умолчанию уровне доступа.

Члены класса могут быть определены перед первым спецификатором доступа. Уровень доступа к таким членам будет зависеть от того, как определяется класс. Если используется ключевое слово struct, то члены, определенные до первого спецификатора доступа, будут открытыми; если используется ключевое слово class, то они будут закрытыми.

Общепринятым стилем считается определение классов, все члены которого предположительно будут открытыми, с использованием ключевого слова struct. Если члены класса должны быть закрытыми, используется ключевое слово class.

Язык программирования C Пятое издание - изображение 222 Единственное различие между ключевыми словами classи structв задаваемом по умолчанию уровне доступа.

Ключевая концепция. Преимущества инкапсуляции

Инкапсуляция предоставляет два важных преимущества.

• Пользовательский код не может по неосторожности повредить состояние инкапсулированного объекта.

• Реализация инкапсулированного класса может со временем измениться, это не потребует изменений в коде на пользовательском уровне.

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

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

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

Упражнение 7.16. Каковы ограничения (если они есть) на количество спецификаторов доступа в определении класса? Какие виды членов должны быть определены после спецификатора public? Какие после спецификатора private?

Упражнение 7.17. Каковы различия (если они есть) между ключевыми словами classи struct?

Упражнение 7.18. Что такое инкапсуляция? Чем она полезна?

Упражнение 7.19. Укажите, какие члены класса Person имеет смысл объявить как public, а какие как private. Объясните свой выбор.

картинка 2237.2.1. Друзья

Теперь, когда переменные-члены класса Sales_dataстали закрытыми, функции read(), print()и add()перестали компилироваться. Проблема в том, что хоть эти функции и являются частью интерфейса класса Sales_data, его членами они не являются.

Класс может позволить другому классу или функции получить доступ к своим не открытым членам, установив для них дружественные отношения (friend). Класс объявляет функцию дружественной, включив ее объявление с предваряющим ключевым словом friend:

class Sales_data {

// добавлены объявления дружественных функций, не являющихся

// членами класса Sales_data

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

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

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

// другие члены и спецификаторы доступа, как прежде

public:

Sales_data() = default;

Sales data(const std::string &s, unsigned n, double p):

bookNo(s), units_sold(n), revenue (p*n) { }

Sales_data(const std::string &s): bookNo(s) { }

Sales_data(std::istream&);

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

Sales_data &combine(const Sales data&);

private:

std::string bookNo;

unsigned units_sold = 0;

double revenue = 0.0;

};

// объявления частей, не являющихся членами интерфейса

// класса Sales_data

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

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

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

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

Язык программирования C Пятое издание - изображение 224Объявления друзей имеет смысл группировать в начале или в конце определения класса.

Язык программирования C Пятое издание - изображение 225Хотя пользовательский код не должен изменяться при изменении определения класса, файлы исходного кода, использующие этот класс, следует перекомпилировать при каждом изменении класса.

картинка 226Объявление дружественных отношений

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

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

Интервал:

Закладка:

Сделать


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

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




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


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


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

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