Архив рубрики: Заметки по языку с и с++

Различные заметки по языку с/с++

Диапазон хранения значений

Для получения максимального и минимального значения мы запросим их через std::numeric_limits  — которая обеспечивает стандартизированный способ запроса различных свойств арифметических типов. К таким данным можно отнести: Получаем следующий вывод через qDebug: Как видим переменные типа float и double не совсем читабельно вывелись. Внесем изменения.

Шаблон класса

Шаблон класса позволяет создавать параметризированный класс. Параметром может быть любой тип или значение одного из допустимого типа. Шаблон класса сам по себе не является ни типом не объектом. Из исходного файла содержащий только определение шаблона не генерируется код. Компилятор генерирует код только когда из данного шаблона был создан конкретный класс с набором аргументов. Общая форма… Читать далее »

Препроцессорные директивы

Данные директивы выполняются до компиляции и управляют работой предпроцессора. Данные команды начинаются со знака # и должны быть в начале строки. Рассмотрим их подробней: #define Данная директива заменяет обозначенный идентификатор на последовательность символов который определен в идентификаторе  Например: #define NULL 0 Везде где будет встречаться идентификатор NULL будет происходит подстановка символа 0 Также можно задать… Читать далее »

Виртуальный деструктор

Данный метод использует удаление класса потомка имея указатель на базовый класс. Рассмотрим следующий фрагмент кода: Порядок вызова будет следующий: Сначала создается базовый класс A, затем производная B. При разрушении наоборот. Сначала вызывается деструктор производного класса, который по окончанию вызывает по цепочки деструктор базового. Попробуем теперь создать объект в динамической памяти: Порядок вызова будет следующий: Как… Читать далее »

Шаблоны функций

Шаблоны начинаются с объявления ключевого слова template. После ключевого слова идут угловые скобки < >, в которых перечисляется список параметров шаблона. Например: Template < typename T> Ключевое слово typename сообщает что будет использован встроенный тип данных. К таким типам относятся: int, double, float, char. Рассмотрим фрагмент кода с использованием шаблона: Вызов функции шаблона:

Преобразование типов

Операторы позволяют преобразовывать типы данных от одних к другим. Есть пять типов операторов casts: c-style cast static_cast const_cast dynamic_cast reinterpret_cast Рассмотрим каждый из преобразований типов поподробней. Начнем с явного преобразования типа. К ним можно отнести такие как: c-style cast и static_cast c-style cast Из названия следует что это пришло из программирования на языке C. Данный… Читать далее »

Перезагрузка функций

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