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

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

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

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

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

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

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

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

Интервал:

Закладка:

Сделать

Исходя из приведенного выше проекта, сам класс Queryдовольно прост:

// класс интерфейса для взаимодействия с иерархией

// наследования Query_base

class Query {

// эти операторы должны обращаться к указателю shared_ptr

friend Query operator~(const Query &);

friend Query operator|(const Query&, const Query&);

friend Query operator&(const Query&, const Query&);

public:

Query(const std::string&); // создает новый WordQuery

// функции интерфейса: вызывают соответствующий оператор Query_base

QueryResult eval(const TextQuery &t) const

{ return q->eval(t); }

std::string rep() const { return q->rep(); }

private:

Query(std::shared_ptr query): q(query) { }

std::shared_ptr q;

};

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

В открытом интерфейсе для класса Queryобъявляется, но еще не может быть определен получающий строку конструктор. Этот конструктор создает объект класса WordQuery, поэтому невозможно определить этот конструктор, пока не определен сам класс WordQuery.

Два других открытых члена представляют интерфейс для класса Query_base. В каждом случае оператор класса Queryиспользует свой указатель класса Query_baseдля вызова соответствующей (виртуальный) функции класса Query_base. Фактически вызываемая версия определяется во время выполнения и будет зависеть от типа объекта, на который указывает указатель q.

картинка 570Оператор вывода класса Query

Оператор вывода — хороший пример того, как работает вся система запросов:

std::ostream &

operator<<(std::ostream &os, const Query &query) {

// Query::rep() осуществляет виртуальный вызов через свой

// указатель Query_base на rep()

return os << query.rep();

}

При выводе объекта класса Queryоператор вывода вызывает (открытую) функцию-член rep()класса Query. Эта функция осуществляет виртуальный вызов через свой указатель-член функции-члена rep()объекта, на который указывает данный объект класса Query.

Query andq = Query(sought1) & Query(sought2);

cout << andq << endl;

Таким образом, когда в коде встречается оператор вывода, он вызывает функцию Query::rep()объекта andq. Функция Query::rep()в свою очередь осуществляет виртуальный вызов через свой указатель класса Query_baseна версию функции rep()класса Query_base. Поскольку объект andqуказывает на объект класса AndQuery, этот вызов выполнит функцию AndQuery::rep().

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

Упражнение 15.32. Что будет при копировании, перемещении, присвоении и удалении объекта класса Query?

Упражнение 15.33. А объектов класса Query_base?

15.9.3. Производные классы

Самая интересная часть классов, производных от класса Query_base, в том, как они представляются. Класс WordQueryпроще всех. Его задача — хранение искомого слова.

Другие классы работают на одном или двух операндах. У класса NotQueryодин операнд, а у классов AndQueryи OrQuery— по два. Операндами в каждом из этих классов могут быть объекты любого из реальных классов, производных от класса Query_base: NotQueryможет быть применен к WordQuery, как и AndQuery, OrQueryили NotQuery. Для обеспечения такой гибкости операнды следует хранить как указатели на класс Query_base. Таким образом, можно привязать указатель на любой необходимый реальный класс.

Но вместо того, чтобы хранить указатель на класс Query_base, классы будут сами использовать объект Query. Подобно тому, как пользовательский код упрощается при использовании класса интерфейса, можно упростить код собственного класса, используя тот же класс.

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

Класс WordQuery

Класс WordQueryотвечает за поиск заданной строки. Это единственная операция, которая фактически выполняет запрос для данного объекта класса TextQuery:

class WordQuery: public Query_base {

friend class Query; // Query использует конструктор WordQuery

WordQuery(const std::string &s) : query_word (s) { }

// конкретный класс: WordQuery определяет все унаследованные чистые

// виртуальные функции

QueryResult eval(const TextQuery &t) const

{ return t.query(query_word); }

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

Интервал:

Закладка:

Сделать

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

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


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

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

x