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

Здесь есть возможность читать онлайн «Стенли Липпман - Язык программирования C++. Пятое издание» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Город: Москва, Год выпуска: 2014, ISBN: 2014, Издательство: Издательский дом Вильямс, Жанр: Программирование, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

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

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Язык программирования C++. Пятое издание»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

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

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

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Язык программирования C++. Пятое издание», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Язык программирования C Пятое издание - изображение 549Для закрытого наследования производный класс должен быть явно определен как private, не следует полагаться на поведение по умолчанию. Это ясно дает понять, что закрытое наследование применено преднамеренно, а не по оплошности.

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

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

Base *p = &d1; // d1 имеет тип Pub_Derv

p = &d2; // d2 имеет тип Priv_Derv

p = &d3; // d3 имеет тип Prot_Derv

p = &dd1; // dd1 имеет тип Derived_from_Public

p = &dd2; // dd2 имеет тип Derived_from_Private

p = &dd3; // dd3 имеет тип Derived_from_Protected

Упражнение 15.19. Предположим, у каждого из классов: Base и производных от него, есть функция-член в формате

void memfcn(Base &b) { b = *this; }

Укажите, была ли эта функция допустима для каждого класса.

Упражнение 15.20. Напишите код проверки ответов на предыдущие два упражнения.

Упражнение 15.21. Выберите одну из следующих общих абстракций, содержащих семейство типов (или любую собственную). Организуйте типы в иерархию наследования.

(a) Форматы графических файлов (например: gif, tiff, jpeg, bmp)

(b) Геометрические примитивы (например: box, circle, sphere, cone)

(c) Типы языка С++ (например: class, function, member function)

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

картинка 55015.6. Область видимости класса при наследовании

Каждый класс определяет собственную область видимости (scope) (см. раздел 7.4), в рамках которой определены его члены. При наследовании область видимости производного класса (см. раздел 2.2.4) вкладывается в области видимости его базовых классов. Если имя не найдено в области видимости производного класса, поиск его определения продолжается в областях видимости базовых классов.

Тот факт, что область видимости производного класса вложена в область видимости его базовых классов, может быть удивителен. В конце концов, базовые и производные классы определяются в разных частях текста программы. Но именно это иерархическое вложение областей видимости класса позволяет членам производного класса использовать члены его базового класса, как будто они являются частью производного класса. Рассмотрим пример:

Bulk_quote bulk;

cout << bulk.isbn();

В этом коде поиск определения имени isbn()осуществляется следующим образом.

• Поскольку вызывается функция isbn()объекта типа Bulk_quote, поиск начинается в классе Bulk_quote. В этом классе имя isbn()не найдено.

• Поскольку класс Bulk_quoteпроисходит от класса Disc_quote, в нем и продолжается поиск. Имя все еще не найдено.

• Поскольку класс Disc_quoteпроисходит от класса Quote, поиск продолжается в нем. В этом классе находится определение имени isbn(); таким образом, вызов isbn()распознается как вызов функции isbn()класса Quote.

Поиск имен осуществляется во время компиляции

Статический тип (см. раздел 15.2.3) объекта, ссылки или указателя определяет, какие члены этого объекта будут видимы. Даже когда статический и динамический типы отличаются (это бывает в случае, когда используется ссылка или указатель на базовый класс), именно статический тип определяет применимые члены. Например, в класс Disc_quoteможно было бы добавить функцию-член, которая возвращает пару (тип pair) (см. раздел 11.2.3), содержащую минимальное (или максимальное) количество и цену со скидкой.

class Disc_quote : public Quote {

public:

std::pair discount_policy() const

{ return {quantity, discount}; }

// другие члены как прежде

};

Функцию discount_policy()можно использовать только через объект, указатель, или ссылку на тип Disc_quote, или класс, производный от него:

Bulk_quote bulk;

Bulk_quote *bulkP = &bulk; // статический и динамический типы совпадают

Quote *itemP = &bulk; // статический и динамический типы отличаются

bulkP->discount_policy(); // ok: bulkP имеет тип Bulk_quote*

itemP->discount_policy(); // ошибка: itemP имеет тип Quote*

Хотя объект bulkимеет функцию-член discount_policy(), она недоступна через указатель itemP. Тип itemP— указатель на тип Quote, а это значит, что поиск имени discount_policy()начнется в классе Quote. У класса Quoteнет члена по имени discount_policy(), поэтому вызов этой функции-члена объекта, ссылки или указателя на тип Quoteневозможен.

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

Интервал:

Закладка:

Сделать

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

Представляем Вашему вниманию похожие книги на «Язык программирования C++. Пятое издание» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


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

Обсуждение, отзывы о книге «Язык программирования C++. Пятое издание» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x