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

Интервал:

Закладка:

Сделать

// специализация

remove_reference::type b;

// decltype(std::move(i)) - это int&&, используется вторая (т.е., T&&)

// частичная специализация

remove_reference::type c;

У всех трех переменных, a, bи с, тип int.

Специализация членов, но не класса

Вместо специализации всего шаблона можно специализировать только одну или несколько его функций-членов. Например, если Foo— это шаблон класса с членом Bar, можно специализировать только этот член:

template struct Foo {

Foo (const T &t = T()): mem(t) { }

void Bar() { /* ... */ }

T mem;

// другие члены класса Foo

};

template<> // специализация шаблона

void Foo::Bar() // специализация члена Bar класса Foo

{

// осуществить всю специализированную обработку, относящуюся к целым

// числам

}

Здесь специализируется только один член класса Foo. Другие его члены предоставляются шаблоном Foo:

Foo fs; // создает экземпляр Foo::Foo()

fs.Bar(); // создает экземпляр Foo::Bar()

Foo fi; // создает экземпляр Foo::Foo()

fi.Bar(); // использует специализацию Foo::Bar()

При использовании шаблона Fooс любым типом, кроме int, члены экземпляра создаются, как обычно. При использовании шаблона Fooс типом intвсе члены экземпляра, кроме Bar, создаются, как обычно. Если использовать член Barкласса Foo, то получится специализированное определение.

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

Упражнение 16.62. Определите собственную версию класса hashи контейнер unordered_multisetобъектов класса Sales_data. Поместите в контейнер несколько транзакций и выведите его содержимое.

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

Упражнение 16.64. Напишите специализированную версию шаблона из предыдущего упражнения для обработки вектора vectorи используйте ее в программе.

Упражнение 16.65. В разделе 16.3 были определены две перегруженных версии функции debug_rep(), одна из которых получает параметр типа const char*, а вторая — типа char*. Перепишите эти функции как специализации.

Упражнение 16.66. Каковы преимущества и недостатки перегрузки функций debug_rep()по сравнению с определением специализаций?

Упражнение 16.67. Повлияет ли определение этих специализаций на подбор функций debug_rep()? Почему?

Резюме

Шаблоны — это отличительная особенность языка С++ и основа его стандартной библиотеки. Шаблон представляет собой независимый от типа "чертеж", используемый компилятором для создания конкретных экземпляров указанных классов или функций. Шаблон разрабатывается один раз, а его экземпляры компилятор создает для соответствующего типа или значения по мере его применения.

Можно определять шаблоны функций и классов. Библиотечные алгоритмы являются шаблонами функций, а библиотечные контейнеры — шаблонами классов.

Явный аргумент шаблона позволяет фиксировать тип или значение одного или нескольких параметров шаблона. К параметрам с явным аргументом шаблона применимы нормальные преобразования.

Специализация шаблона — это отдельное специальное определение, позволяющее создать такую версию шаблона, в которой для одного или нескольких параметров указан определенный тип или значение. Специализация полезна в случае, когда для некоторых типов стандартное определение шаблона неприменимо.

Главная часть последнего выпуска стандарта языка С++ относится к шаблонам с переменным количеством аргументов. Такой шаблон способен получать переменное количество аргументов разных типов. Шаблоны с переменным количеством аргументов позволяют написать такие функции, как функция-член emplace()классов контейнеров и библиотечная функция make_shared(), передающая аргументы конструктору объекта.

Термины

Аргумент шаблона(template argument). Тип или значение, указанные при создании экземпляра шаблона.

Аргумент шаблона по умолчанию(default template argument). Тип или значение, используемые при создании экземпляра шаблона, если пользователь не предоставил соответствующий аргумент.

Дедукция аргумента шаблона(template argument deduction). Процесс, в ходе которого компилятор выясняет, какой экземпляр шаблона функции следует создать. Для этого компилятор исследует типы аргументов, переданных в качестве параметров шаблона. На основании полученных типов или значений объектов, связанных с параметрами шаблона, компилятор автоматически создает соответствующую версию функции.

Пакет параметров(parameter pack). Параметр шаблона или функции, представляющий любое количество параметров.

Пакет параметров функции(function parameter pack). Пакет, представляющий любое количество параметров функций.

Пакет параметров шаблона(template parameter pack). Пакет, представляющий любое количество параметров шаблона.

Параметр значения(nontype parameter). Параметр шаблона, представляющий значение. Во время создания экземпляра шаблона класса каждый параметр значения связывается с константным выражением, переданным в качестве аргумента при создании экземпляра класса.

Параметр типа(type parameter). Имя, используемое в списке параметров шаблона вместо имени типа. Параметры типа определяется после ключевого слова typenameили class.

Параметр шаблона(template parameter). Имя, определенное в списке параметров шаблона и используемое в определении его экземпляров. Параметр шаблона может быть типом или значением. Чтобы использовать шаблон класса, следует предоставить явные аргументы для каждого параметра шаблона. Компилятор использует эти типы или значения при создании версии экземпляра класса. При этом используемые параметры заменяются фактическими аргументами. Когда используется шаблон функции, компилятор выводит аргументы шаблона из аргументов вызова и создает экземпляр специфической функции на их основании.

Развертывание пакета(pack expansion). Процесс, в ходе которого пакет параметров заменяется соответствующим списком его элементов.

Создание экземпляра(instantiate). Процесс компилятора, в ходе которого соответствующие параметры шаблона заменяются фактическими аргументами и создается специфический экземпляр шаблона. Экземпляры функций создаются автоматически на основании аргументов, использованных в вызове. При использовании шаблона класса следует явно предоставить аргументы шаблона.

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

Интервал:

Закладка:

Сделать


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

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




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


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


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

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