Категории выражений, такие как lvalue и rvalue, относятся, скорее, к фундаментальным теоретическим понятиям языка C++, чем к практическим аспектам его использования. По этой причине многие даже опытные программисты достаточно смутно представляют себе, что они означают. В этой статье я постараюсь максимально просто объяснить значение этих терминов, разбавляя теорию практическими примерами. Сразу оговорюсь: статья не претендует на максимально полное и строгое описание категорий выражений, за подробностями я рекомендую обращаться непосредственно в первоисточник: Стандарт языка C++.
Рубрика «С++» - 10
Категории выражений в C++
2019-02-25 в 21:18, admin, рубрики: c++, glvalue, lvalue, prvalue, rvalue, value categories, xvalue, С++Если проект «Театр» используй акторов…
2019-02-07 в 21:28, admin, рубрики: c++, акторы, АСУ, Промышленное программирование, Разработка под Linux, С++, театрВ этой статье будет рассказ об опыте использования акторного подхода в одном интересном проекте автоматизированной системы управления для театра. Это именно впечатление от использования, не более того.
Как перестать писать прошивки для микроконтроллеров. Пример
2018-12-26 в 9:32, admin, рубрики: C, c++, dbi, IoT, openocd, pintool, stm32, микроконтроллеры, программирование микроконтроллеров, Разработка для интернета вещей, С++
И снова мы разбираемся как не писать прошивки для микроконтроллеров. Прошлая статья вызвала у людей много эмоций и, мне кажется, осталось мало кем понята и, может быть, мной плохо было объяснено зачем это все вообще затевалось.
Как перестать писать прошивки для микроконтроллеров и начать жить. Часть I
2018-12-20 в 7:46, admin, рубрики: C, c++, dbi, IoT, openocd, pintool, stm32, valgrind, виртуализация, микроконтроллеры, программирование микроконтроллеров, Разработка для интернета вещей, С++
Здравствуйте, меня зовут Евгений, и мне надоело писать прошивки для микроконтроллеров. Как это это случилось и что с этим делать, давайте разберемся.
У Интернета могут быть серьёзные проблемы из-за языков, подобных C и C++, которые способствуют появлению уязвимостей
2018-12-08 в 18:47, admin, рубрики: C, c++, перевод статьи, С++Привет! Представляю вашему вниманию перевод статьи "Internet aurait de sérieux problèmes à cause de langages comme C et C++ favorisant la survenue de failles" (фр. язык).
Но мало кого из разработчиков это волнует
Один баг затрагивает iPhone, другой – Windows, а третий – сервера, работающие на Linux. На первый взгляд эти баги не имеют ничего общего, так как касаются разных платформ: Android, iOS, macOS, Windows, Linux. Однако, на самом деле, всё иначе, по мнению Алекса Гейнора, инженера по безопасности программного обеспечения в Mozilla, ранее работавшего в USDS (United States Digital Service).
Во время третьего «Weakest Link», ежегодного мероприятия, организованного Motherboard Vice,
на тему компьютерного взлома и кибербезопасности в будущем, Алекс Гейнор поднял серьезную проблему, которая, по его мнению, может угрожать Интернету, но, как ни парадоксально, оставляет разработчиков совершенно равнодушными.
Гейнор объяснил, что три ранее упомянутые ошибки существуют, потому что программное обеспечение, которое они затрагивают на разных платформах, было написано с помощью языков программирования, имеющих неприятную тенденцию способствовать возникновению ошибок типа «memory unsafety», разрешая доступ к невыделенным областям памяти.
Эта категория ошибок может привести к багам и уязвимостям безопасности во время получения доступа к памяти.
Читать полностью »
Краткий гид по обучению С++: что, когда и на чём создавать
2018-12-07 в 9:00, admin, рубрики: c++, geekbrains, Pascal, qt creator, Блог компании Mail.Ru Group, обучение программированию, Программирование, С++
Недавно у нас на GeekBrains стартовал свежий курс "Профессия: разработчик C++". Программа позволит всего за 9 месяцев освоить этот непростой язык и стать специалистом уровня junior. А это непростая задача. К примеру, в школах и ВУЗах на изучение С++ уходит минимум 2 года, чаще 4-5. Чтобы показать из чего состоит этот нелегкий путь, мы схематично описали для вас основные этапы.
Читать полностью »
NCBI Genome Workbench: научные исследования под угрозой
2018-11-20 в 7:06, admin, рубрики: bugs, C, c++, open source, pvs-studio, static code analysis, Блог компании PVS-Studio, Компиляторы, С++, статический анализ кодаСовременные компьютерные технологии, технические и программные решения — всё это сильно облегчает и ускоряет проведение различных научных исследований. Зачастую компьютерное моделирование — единственный способ проверки многих теорий. Научный софт имеет свои особенности. Например, такой софт зачастую подвергается очень тщательному тестированию, но слабо документирован. Тем не менее программное обеспечение пишется людьми, а люди допускают ошибки. Ошибки в научных программах могут ставить под сомнение целые исследования. В этой статье будут приведены десятки проблем, обнаруженных в коде пакета программ NCBI Genome Workbench.
Читать полностью »
Работа со строками на этапе компиляции в современном C++
2018-11-06 в 3:12, admin, рубрики: c++, compile-time, strings, templates, высокая производительность, ненормальное программирование, Программирование, С++, С++14
Если вы программируете на C++, то наверняка задавались вопросом почему нельзя сравнить два строковых литерала или выполнить их конкатенацию:
auto str = "hello" + "world"; // ошибка компиляции
if ("hello" < "world") { // компилируется, но работает не так, как ожидалось
// ...
}
Впрочем, как говорится, "нельзя, но если очень хочется, то можно". Ломать стереотипы будем под катом, причем прямо на этапе компиляции.
Разработка интерфейсных классов на С++
2018-10-22 в 8:55, admin, рубрики: c++, Программирование, профессиональный код, С++Оглавление
Введение
1. Специальные функции-члены, создание и удаление объектов
1.1. Специальные функции-члены
1.2. Создание и удаление объектов — основные подробности
1.3. Уровень доступа деструктора
1.4. Создание и удаление в одном модуле
1.5. Полиморфное удаление
1.6. Удаление при неполном объявлении класса
2. Чисто виртуальные функции и абстрактные классы
2.1. Чисто виртуальные функции
2.2. Абстрактные классы
2.3. Чисто виртуальный деструктор
3. Интерфейсные классы
3.1. Реализации
3.2. Создание объекта
3.3. Удаление объекта
3.3.1. Использование оператора delete
3.3.2. Использование специальной виртуальной функции
3.3.3. Использование внешней функции
3.3.4. Автоматическое удаление с помощью интеллектуального указателяЧитать полностью »
Бесполезный отложенный неблокирующий обмен сообщениями в MPI: лайт-аналитика и туториал для тех, кто немножечко «в теме»
2018-10-21 в 17:37, admin, рубрики: c++, mpi, параллельное программирование, параллельные вычисления, С++, системное программированиеСовсем недавно мне пришлось решать очередную тривиальную учебную задачу от своего преподавателя. Однако, решая ее, мне удалось обратить внимание на вещи о коих я ранее вовсе не задумывался, возможно, не задумывались и Вы. Эта статья скорее будет полезна студентам да и всем, кто начинает свой путь в мир параллельного программирования с использованием MPI.
Наше «Дано: »
Итак, суть нашей, в сущности вычислительной задачи, заключается в том, чтобы сравнить во сколько раз программа, использующая неблокирующие отложенные двухточечные передачи быстрее той, что использует блокирующие двухточечные передачи. Измерения будем проводить для входных массивов размерностью 64, 256, 1024, 4096, 8192, 16384, 65536, 262144, 1048576, 4194304, 16777216, 33554432 элементов. По умолчанию предлагается решать ее четырьмя процессами. А вот, собственно, и то, что мы будем считать: