Уютное сообщество С++ разработчиков
779 subscribers
81 photos
7 videos
83 links
Изучаем C++.
Ресурсы, обучения, задачи, шпаргалки.
Вопросы с собеседований по C++ и ответы на них.
Задачи и тесты по C++ для тренировки и обучения.
По рекламе: @anothertechrock
Download Telegram
Реализация полезных алгоритмов на C++

Автор: Дмитро Кедик
Год издания: 2024

#cpp #ru

Скачать книгу
C++ для профи

Автор: Джош Лоспинозо
Год издания: 2021

#cpp #ru

Скачать книгу
Объектно-ориентированное программирование
в C++


Автор: Роберт Лафоре
Год издания: 2021

#cpp #ru

Скачать книгу
Основы разработки программ на языке C++

Автор: Станислав Беляков
Год издания: 2020

#cpp #ru

Скачать книгу
Modern C++ for Absolute Beginners

Автор:
Slobodan Dmitrović
Год издания: 2023

#cpp #en

Скачать книгу
🤔 Чем отличается выброс исключения от "аборта"?

Исключение позволяет обработать ошибку и продолжить выполнение программы. Абортивное завершение (abort) немедленно завершает процесс без возможности восстановления.

Ставь 👍 если знал ответ, 🔥 если нет
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 Удаление элементов из контейнеров с помощью методов erase() и clear()

erase() — удаляет один элемента или диапазон элементов из контейнера, такого как std::vector, std::set, и т.д.

clear() — удаляет все элементы из контейнера, оставляя его пустым. После вызова clear() размер контейнера становится равным нулю.

🔥 — если узнал новое
🤝 если уже пользовался

📣 Уютное сообщество С++ разработчиков | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
😭 Путеводитель C++ ПРОГРАММИСТА ПО НЕОПРЕДЕЛЕННОМУ ПОВЕДЕНИЮ падает в твою коллекцию

«Преждевременная оптимизация — корень всех зол» (Д. Кнут или Э. Хоар — в зависимости от того, какой источник смотрите)


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

Если ты собираешься писать на C++ код, в работоспособности которого хочешь быть хоть немного уверенным, стоит знать о существовании различных подводных камней и ловко расставленных мин в стандарте языка, его библиотеке, и всячески их избегать.

👉 В книге Дмитрий Свиридкин собрал множество самых разных примеров, как в коде на C и C++ можно наткнуться на неопределенное, неожиданное и совершенно ошибочное поведение
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍2
Бросаем число
#новичкам

Мы привыкли, что исключения имеют какую-то свою иерархию и каждый класс имеет свое конкретное назначение в контексте отображения ошибки.

А что если мы попытаемся бросить что-то совсем несвязанное с иcключениями? Например, какой-нибудь тривиальный тип вроде int. Это вообще законно?

Абсолютно законно. В С++ можно бросать все, что угодно, кроме объектов неполных типов, абстрактных классов и указателей на неполный тип. Даже указатель на void можно.

Как и число.

Поймать число примерно также просто, как его бросить:

void foo() {
throw 1;
}

int main() {
try {
foo();
}
catch(int i) {
std::cout << i << std::endl;
}
}

// OUTPUT: 1


Это кстати один из любимых вопросов у интервьюеров.

"А можно ли кидать число вместо исключения?"

Теперь вы с полной уверенностью ответите "можно".

Но вот зачем это может быть нужно? Оставьте ваши мысли в комментариях

Make sense. Stay cool.

#interview #cppcore
👨‍💻На работе код читают чаще, чем пишут. Когда смысл приходится восстанавливать по комментариям, неочевидным параметрам и скрытым договорённостям, команда теряет время, а риск ошибок растёт.

📆16 июля в 20:00 МСК на открытом уроке разберем, как переносить смысл программы в типы, сигнатуры и структуру кода. На примерах из реальных проектов участники сделают сигнатуры понятнее с помощью std::optional и enum class, упростят управление ресурсами через RAII и заменят сложные циклы готовыми алгоритмами, ranges и views.

В результате у вас появится набор приёмов для более ясного и самодокументируемого кода.

🏁Урок проходит в преддверии старта курса «C++-разработчик». Зарегистрируйтесь, чтобы познакомиться с форматом обучения, задать вопросы эксперту и потренироваться выражать намерения средствами языка, а не комментариями: https://vk.cc/cZn84F

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
1👍1
Что выведет следующий код и почему?

#include <iostream>

void foo(int a) { std::cout << "int"; }
void foo(char a) { std::cout << "char"; }

int main() {
foo(97);
return 0;
}


Ответ:
int

Почему?
Число 97 по умолчанию имеет тип
int, поэтому вызывается версия foo(int).
Если бы мы передали
'a' (символьный литерал), то вызвалась бы foo(char).

⚡️ Подвох: Если бы параметр был
unsigned char, то могла бы произойти неявная конверсия, но тут всё однозначно! 😊