Публикации рубрики - Программирование. Страница: 29

На этой странице собрано около (~) 13675 публикаций, конспектов, лекций и других учебных материалов по направлению: Программирование. Для удобства навигации можете воспользоваться навигацией внизу страницы.

Кэширование вычислений. Преподсчёт

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

Оптимизация работы с памятью

Как известно, внутри процессора имеется специальная быстродействующая область памяти − кэш. В кэше хранятся копии часто используемых данных из оперативной памяти. Если при обращении к ячейке памяти она обнаруживается в кэше,

Инструменты и приёмы отладки

Инварианты Применение инвариантов относится не столько к отладке, сколько к вопросам написания качественного кода, содержащего минимум ошибок. Тем не менее, мы всё же решили вставить данный материал в эту главу ввиду его

Константа нулевого указателя nullptr

До введения стандарта C++11 для обозначения неинициализированного указателя использовалась числовая константа 0 или макрос NULL, имевший значение ((void*)0). Такой подход вызывает проблемы, связанные с перегрузкой функции, так как

Улучшение процесса инициализации объектов

В С++11 появилась возможность инициализации объектов класса с помощью списка инициализации, по аналогии с инициализацией структур, агрегирующих простые типы данных либо другие структуры. Значения из списка инициализации будут

Изобретение велосипеда (Reinventing the wheel)

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

Последовательные контейнеры. Итераторы

К последовательным контейнерам относятся шаблонные классы std::vector, std::deque и std::list. На практике класс std::vector используется крайне широко, тогда как два оставшихся класса применяются довольно редко. Класс std::vector можно рассматривать

Шаблонные функции и классы. библиотека стандартных шаблонов

Шаблонные функцииМногие алгоритмы работают одинаково независимо от того, для обработки каких данных они применяются. Например, алгоритм сортировки методом пузырька будет выглядеть одинаково независимо от того, сортируем ли мы

Спецификация исключений, возбуждаемых функцией

При объявлении функции в языке С++ можно явным образом объявить, какие исключения могут быть сгенерированы из этой функции. Для этого используется ключевое слово throw. Например, можно явно объявить, что функция firstLine способна

Повторное возбуждение исключений

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

Механизмы раннего и позднего связывания

Полиморфизм ("много форм") – это свойство классов-родственников выполнять однотипные действия по-разному. Разберёмся, как можно реализовать полиморфизм в С++ при организации иерархий классов. Мы уже говорили, что в

Дружественные функции и классы

Перегрузим для класса time_range операцию '<<' (вывод в поток). В качестве первого аргумента данной операции выступает объект класса std::ostream (именно такой тип имеют стандартные объекты cout и cerr). Поскольку мы не можем добавлять новые

Область видимости элементов класса. Инкапсуляция

Все элементы класса (и поля, и методы) можно разделить на три группы в зависимости от их области видимости: 1) public: открытые элементы, к которым имеется доступ из любого участка программы, использующей класс 2) private: скрытые элементы,

Основы объектно-ориентированного программирования

Основные понятия ООП Мы уже затрагивали некоторые понятия ООП в предыдущих разделах. Теперь пришло время систематизировать эти знания и освоить современный способ разработки программного обеспечения. ООП – способ разработки

Способы динамического выделения и освобождения памяти

В С++ имеется два способа работы с динамической памятью: • использование операций new и delete (основной способ, принятый в С++) • использование функций malloc (calloc, realloc) и free (способ, доставшийся в наследство от языка С). Первым способом мы

Статическое и динамическое выделение памяти

В С++, как и во многих других языках, память можно выделять статически (память выделяется до начала выполнения программы и освобождается после завершения программы) или динамически (память выделяется и освобождается в процессе

Директивы препроцессора. Макросы

В пункте 1.1 было приведено определение термина "препроцессинг". В данном разделе мы рассмотрим использование директив препроцессора более подробно. Выше мы уже сталкивались с директивой #include, она позволяет вставить

Параметры функции. Способы передачи параметров

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

Описание функции и прототип функции

Немного уточним описание функции: тип имя_функции() {тело_функции} Верхняя строка описания – заголовок функции, нижняя – тело. Часто заголовок функции называют объявлением (далее мы рассмотрим ещё одно понятие, связанное с