Стенли Липпман - Язык программирования 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.h ----

// директивы #include должны быть перед открытием пространства имен

#include

namespace cplusplus_primer {

class Sales_data { /* ... */};

Sales_data operator+(const Sales_data&,

const Sales_data&);

// объявления остальных функций интерфейса класса Sales_data

}

// ---- Sales_data.cc ----

// все директивы #include перед открытием пространства имен

#include "Sales_data.h"

namespace cplusplus_primer {

// определения членов класса Sales_data и перегруженных операторов

}

Использующая эту библиотеку программа включила бы все необходимые заголовки. Имена в этих заголовках определены в пространстве имен cplusplus_primer:

// ---- user.cc ----

// имена заголовка Sales_data.h находятся в пространстве

// имен cplusplus_primer

#include "Sales_data.h"

int main() {

using cplusplus_primer::Sales_data;

Sales_data trans1, trans2;

// ...

return 0;

}

Подобная организация программы придает библиотеке свойство модульности, необходимое как разработчикам, так и пользователям. Каждый класс организован в виде двух файлов: интерфейса и реализации. Пользователь одного класса вовсе не должен использовать при компиляции другие классы. Их реализацию можно скрыть от пользователей, разрешив при этом компилировать и компоновать файлы Sales_data.ccи user.ccв одну программу, причем без опасений по поводу возникновения ошибок во время компиляции или компоновки. Кроме того, разработчики библиотеки могут работать над реализацией каждого класса независимо.

В использующую эту библиотеку программу следует подключить все необходимые заголовки. Имена в этих заголовках определены в пространстве имен cplusplus_primer.

Следует заметить, что директивы #includeобычно не помещают в пространство имен. Если попробовать сделать это, то произойдет попытка определения всех имен в этом заголовке как членов окружающего пространства имен. Например, если бы файл Sales_data.hоткрыл пространство имен cplusplus_primerпрежде, чем включить заголовок string, то в программе была бы ошибка, поскольку это привело бы к попытке определить пространство имен stdв пространстве имен cplusplus_primer.

Определение членов пространства имен

Если объявления находятся в области видимости, то код в пространстве имен может использовать короткую форму имен, определенных в том же (или вложенном) пространстве имен:

#include "Sales_data.h"

namespace cplusplus_primer { // повторное открытие cplusplus_primer

// члены, определенные в пространстве имен, могут использовать имена

// без уточнений

std::istream&

operator>>(std::istream& in, Sales_data& s) { /* ... */}

}

Член пространства имен может быть также определен вне определения пространства имен. Для этого применяется подход, подобный определению членов класса вне его. Объявление пространства имен должно находиться в области видимости, а в определении следует указать пространство имен, которому принадлежит имя.

// члены пространства имен, определенные вне его, должны использовать

// полностью квалифицированные имена

cplusplus_primer::Sales_data

cplusplus_primer::operator+(const Sales_data& lhs,

const Sales_data& rhs) {

Sales_data ret(lhs);

// ...

}

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

Хотя член класса пространства имен может быть определен вне его определения, такие определения должны присутствовать в окружающем пространстве имен. Таким образом, оператор operator+класса Sales_dataможно определить в пространстве имен cplusplus_primerили в глобальной области видимости. Но он не может быть определен в несвязанном пространстве имен.

Специализация шаблона

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

// специализацию нужно объявить как член пространства std

namespace std {

template <> struct hash;

}

// добавив объявление для специализации к пространству std,

// специализацию можно определить вне пространства имен std

template <> struct std::hash {

size_t operator()(const Sales_data& s) const {

return hash()(s.bookNo) ^

hash()(s.units_sold) ^

hash()(s.revenue);

}

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

};

Глобальное пространство имен

Имена, определенные в глобальной области видимости (т.е. имена, объявленные вне любого класса, функции или пространства имен), определяются в глобальном пространстве имен (global namespace). Глобальное пространство имен неявно объявляется и существует в каждом приложении. Каждый файл, который определяет сущность в глобальной области видимости (неявно), добавляет ее имя к глобальному пространству имен.

Для обращения к членам глобального пространства имен применяется оператор области видимости (оператор ::) (scope operator). Поскольку глобальное пространство имен неявно, у него нет имени.

Форма записи при обращении к члену глобального пространства имен имеет следующий вид.

:: член_имя

Вложенные пространства имен

Вложенное пространство имен (nested namespace) — это пространство имен, определенное в другом пространстве имен:

namespace cplusplus_primer {

// первое вложенное пространство имен: определение части

// библиотеки Query

namespace QueryLib {

class Query { /* ... */ };

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

// ...

}

// второе вложенное пространство имен: определение части

// библиотеки Sales_data

namespace Bookstore {

class Quote { /* ... */ };

class Disc_quote : public Quote { /* ... */ };

// ...

}

}

Вложенное пространство имен — это вложенная область видимости, ее область видимости вкладывается в пределы содержащего ее пространства имен. Имена вложенных пространств имен подчиняются обычным правилам: имена, объявленные во внутреннем пространстве имен, скрывают объявления того же имени во внешнем пространстве. Имена, определенные во вложенном пространстве имен, являются локальными для внутреннего пространства имен. Код во внешних частях окружающего пространства имен может обратиться к имени во вложенном пространстве имен только через его квалифицированное имя. Например, имя класса QueryLib, объявленного во вложенном пространстве имен, выглядит следующим образом:

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

Интервал:

Закладка:

Сделать


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

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




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


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


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

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