Получи случайную криптовалюту за регистрацию!

C geek

Логотип телеграм канала @cpp_geek — C   geek C
Логотип телеграм канала @cpp_geek — C   geek
Адрес канала: @cpp_geek
Категории: Технологии
Язык: Русский
Количество подписчиков: 1.25K
Описание канала:

Учим C/C на примерах

Рейтинги и Отзывы

3.33

3 отзыва

Оценить канал cpp_geek и оставить отзыв — могут только зарегестрированные пользователи. Все отзывы проходят модерацию.

5 звезд

0

4 звезд

2

3 звезд

0

2 звезд

1

1 звезд

0


Последние сообщения

2022-10-09 09:00:11
Перегрузка операторов

Ключевое слово operator позволяет изменить работу конкретного оператора с экземплярами класса. Это дает оператору дополнительное значение — "перегружает" его. Компилятор различает разные значения оператора, проверяя типы его операндов.

В примере оператор + перегружается для сложения двух комплексных чисел.

@cpp_geek
37 views06:00
Открыть/Комментировать
2022-10-08 09:00:05
Кортеж — tuple

Как и pair, tuple — коллекция значений различных типов данных конкретного размера.

В некоторых случаях вместо tuple удобнее использовать std::array. Это обычный массив с некоторыми функциями стандартной библиотеки C++, который был добавлен в C++11.

@cpp_geek
139 views06:00
Открыть/Комментировать
2022-10-07 09:00:07
Декларатор ссылки lvalue: &

Содержит адрес объекта, но синтаксически ведет себя подобно объекту.

Ссылку lvalue можно считать другим именем для объекта. Объявление ссылки lvalue состоит из необязательного списка спецификаторов, за которым следует декларатор ссылки. Ссылка должна быть инициализирована и не может быть изменена.

Любой объект, адрес которого можно преобразовать в некоторый тип указателя, можно также преобразовать в аналогичный ссылочный тип. Например, любой объект, адрес которого можно преобразовать в тип char *, можно также преобразовать в тип char &.

В примере демонстрируется декларатор ссылки путем объявления объекта Person и ссылки на этот объект. Поскольку rFriend является ссылкой на myFriend, при обновлении любой из этих переменных изменяется один и тот же объект.

@cpp_geek
159 views06:00
Открыть/Комментировать
2022-10-06 09:00:05
В чем различия между delete и delete[]?

delete предназначен для уничтожения объектов, память под которые выделена при помощи new(). delete[] для объектов выделенных при помощи оператора new[]().

При неправильном использовании оператора delete (например, delete вместо delete[]) результат будет: undefined behavior.

@cpp_geek
156 views06:00
Открыть/Комментировать
2022-10-05 09:00:05
Оператор присваивания ( = ), строго говоря, является бинарным оператором. Его объявление идентично объявлению любого другого бинарного оператора со следующими исключениями:

Он должен быть нестатической функцией-членом.

Он не наследуется производными классами.

Компилятор может создать функцию operator = по умолчанию для типов классов, если она не существует.

В примере показано, как объявить оператор присваивания.

@cpp_geek
187 views06:00
Открыть/Комментировать
2022-10-04 09:00:08
Функция copy

Универсальная функция копирования, используемая для копирования диапазона элементов из одного контейнера в другой. Требуется 3 аргумента:
1) указатель на начало исходного контейнера, откуда нужно начинать копирование элементов.
2) указатель на конец исходного контейнера, куда должны быть скопированы элементы.
3) указатель на начало целевого контейнера, в который нужно начинать копирование элементов.

@cpp_geek
174 views06:00
Открыть/Комментировать
2022-10-03 09:00:08
Введение в обработку исключений

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

Есть два типа исключений: а) синхронные, б) асинхронные (например, которые находятся вне контроля программы, сбой диска и т. д.). Для этой цели C++ предоставляет следующие специализированные ключевые слова.

try: представляет блок кода, который может вызвать исключение.
catch: представляет блок кода, который выполнится при возникновении определенного исключения.
throw: используется для создания исключения. Также используется для перечисления исключений, которые генерирует функция, но не обрабатывает себя.

@cpp_geek
9.1K views06:00
Открыть/Комментировать
2022-10-02 09:00:12
Алгоритм search

Ищет последовательность [first1, last1) для первого вхождения подпоследовательности, определенной [first2, last2), и возвращает итератор в свой первый элемент вхождения, или last1, если вхождения не найдены.

@cpp_geek
183 views06:00
Открыть/Комментировать
2022-10-01 09:00:15
Могут ли ссылки отсылать к недопустимому местоположению в памяти в C++?

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

Но есть пара исключений, когда у нас могут быть недействительные ссылки. Они приведены на картинке.

@cpp_geek
195 views06:00
Открыть/Комментировать
2022-09-30 09:00:23
Сonstexpr

Допустим, у вас есть выражение, значение которого нужно вычислить и которое не будет меняться после этого. Вы можете вычислить значение заранее и использовать его как макрос. Или, как предлагает C++11, вы можете использовать constexpr.

Программисты сокращают время работы программы насколько возможно. Например, некоторые операции перекладываются на компилятор.

Код выше — довольно частый пример использования constexpr.

Так как мы объявили функцию вычисления чисел Фибоначчи как constexpr, компилятор вычислит значение fib(20) во время компиляции. Тогда после компиляции строка const long long bigval = fib(20); будет заменена на const long long bigval = 2432902008176640000.

@cpp_geek
192 views06:00
Открыть/Комментировать