#example
Некоторые различия между ссылками и указателями
1. Указатель может быть объявлен void, а ссылка - никогда. Пример на картинке.
2. Переменная-указатель может иметь несколько уровней вложенности, то есть, например, бывают одиночные указатели, двойные указатели, тройные указатели. Ссылка же имеет только один единственный уровень вложенности.
3. Ссылочная переменная не может быть обновлена.
Некоторые различия между ссылками и указателями
1. Указатель может быть объявлен void, а ссылка - никогда. Пример на картинке.
2. Переменная-указатель может иметь несколько уровней вложенности, то есть, например, бывают одиночные указатели, двойные указатели, тройные указатели. Ссылка же имеет только один единственный уровень вложенности.
3. Ссылочная переменная не может быть обновлена.
#article
Достоинства и недостатки псевдонимов в C и C++, Часть 2
https://developers.redhat.com/blog/2020/06/03/the-joys-and-perils-of-aliasing-in-c-and-c-part-2
Достоинства и недостатки псевдонимов в C и C++, Часть 2
https://developers.redhat.com/blog/2020/06/03/the-joys-and-perils-of-aliasing-in-c-and-c-part-2
Red Hat Developer
The joys and perils of aliasing in C and C++, Part 2 | Red Hat Developer
In the previous article, I discussed the benefits of C and C++ language restrictions in optimized code. In this second half, I present a variety of programming
#example
Могут ли ссылки отсылать к недопустимому местоположению в памяти в C++?
В C++ ссылки более безопасны, чем указатели, потому что ссылки должны быть инициализированы, и их нельзя изменить, чтобы ссылаться на что-то другое после инициализации. Но есть исключения, когда у нас могут быть недействительные ссылки.
Но есть пара исключений, когда у нас могут быть недействительные ссылки. Они приведены на картинке.
Могут ли ссылки отсылать к недопустимому местоположению в памяти в C++?
В C++ ссылки более безопасны, чем указатели, потому что ссылки должны быть инициализированы, и их нельзя изменить, чтобы ссылаться на что-то другое после инициализации. Но есть исключения, когда у нас могут быть недействительные ссылки.
Но есть пара исключений, когда у нас могут быть недействительные ссылки. Они приведены на картинке.
#article
CopperSpice представляет собой набор библиотек C++, используемых для разработки кроссплатформенных приложений.
https://cpp.libhunt.com/copperspice-alternatives
CopperSpice представляет собой набор библиотек C++, используемых для разработки кроссплатформенных приложений.
https://cpp.libhunt.com/copperspice-alternatives
Libhunt
copperspice Alternatives - C++ GUI | LibHunt
Cross platform C++ libraries. Tags: Containers, GUI, C++11, Cross-platform, Library.
#example
Введение в обработку исключений
Одним из преимуществ C++ перед C является обработка исключений. Исключения - это ненормальные условия, с которыми программа сталкивается во время своего выполнения.
Есть два типа исключений: а) синхронные, б) асинхронные (например, которые находятся вне контроля программы, сбой диска и т. д.). Для этой цели C++ предоставляет следующие специализированные ключевые слова.
try: представляет блок кода, который может вызвать исключение.
catch: представляет блок кода, который выполнится при возникновении определенного исключения.
throw: используется для создания исключения. Также используется для перечисления исключений, которые генерирует функция, но не обрабатывает себя.
Введение в обработку исключений
Одним из преимуществ C++ перед C является обработка исключений. Исключения - это ненормальные условия, с которыми программа сталкивается во время своего выполнения.
Есть два типа исключений: а) синхронные, б) асинхронные (например, которые находятся вне контроля программы, сбой диска и т. д.). Для этой цели C++ предоставляет следующие специализированные ключевые слова.
try: представляет блок кода, который может вызвать исключение.
catch: представляет блок кода, который выполнится при возникновении определенного исключения.
throw: используется для создания исключения. Также используется для перечисления исключений, которые генерирует функция, но не обрабатывает себя.
#library
Библиотека C++, предоставляющая различные параллельные структуры данных и схемы восстановления.
https://cpp.libhunt.com/xenium-alternatives
Библиотека C++, предоставляющая различные параллельные структуры данных и схемы восстановления.
https://cpp.libhunt.com/xenium-alternatives
Libhunt
xenium Alternatives - C++ Concurrency | LibHunt
A C++ library providing various concurrent data structures and reclamation schemes. Tags: Concurrency, Lock-Free, C++17, Reclamation-schemes.
#guide
Руководство по C ++ 11: практическое руководство для программиста на каждый день.
https://stuartwheaton.com/blog/2020-06-14-c++11-guide/
Руководство по C ++ 11: практическое руководство для программиста на каждый день.
https://stuartwheaton.com/blog/2020-06-14-c++11-guide/
SWon Software
C++11 Guide
A Practical Guide for the Everyday Programmer
#example
Могут ли статические функции быть виртуальными в C++?
В C++ статическая функция-член класса не может быть виртуальной.
Кроме того, статические функции-члены класса не могут быть const и volatile.
В примере кода приведены две функции, обе из которых не дадут программе скомпилироваться.
Могут ли статические функции быть виртуальными в C++?
В C++ статическая функция-член класса не может быть виртуальной.
Кроме того, статические функции-члены класса не могут быть const и volatile.
В примере кода приведены две функции, обе из которых не дадут программе скомпилироваться.
#article
Преобразование ста миллионов целых чисел в строки в секунду.
https://www.zverovich.net/2020/06/13/fast-int-to-string-revisited.html
Преобразование ста миллионов целых чисел в строки в секунду.
https://www.zverovich.net/2020/06/13/fast-int-to-string-revisited.html
#framework
ffead-cpp - фреймворк для разработки корпоративных приложений.
https://cpp.libhunt.com/ffead-cpp-alternatives
ffead-cpp - фреймворк для разработки корпоративных приложений.
https://cpp.libhunt.com/ffead-cpp-alternatives
Libhunt
ffead-cpp Alternatives - C++ Frameworks | LibHunt
Framework for Enterprise Application Development in c++, HTTP1/HTTP2/HTTP3 compliant, Supports multiple server backends. Tags: Frameworks.
#example
Оператор присваивания ( = ), строго говоря, является бинарным оператором. Его объявление идентично объявлению любого другого бинарного оператора со следующими исключениями:
☑️ Он должен быть нестатической функцией-членом.
☑️ Он не наследуется производными классами.
☑️ Компилятор может создать функцию operator = по умолчанию для типов классов, если она не существует.
В примере показано, как объявить оператор присваивания.
Оператор присваивания ( = ), строго говоря, является бинарным оператором. Его объявление идентично объявлению любого другого бинарного оператора со следующими исключениями:
☑️ Он должен быть нестатической функцией-членом.
☑️ Он не наследуется производными классами.
☑️ Компилятор может создать функцию operator = по умолчанию для типов классов, если она не существует.
В примере показано, как объявить оператор присваивания.
C++ Concurrency in Action.pdf
6.5 MB
#books
C++ Concurrency in Action (2019)
Автор: Anthony Williams
Данная книга написана для программистов, желающих углубиться в тему многопоточности на C++. В ней подробно описано использование полезных особенностей языка, а также приведены типичные ошибки и готовые решения проблем разработки приложений с использованием нескольких потоков. Книга была обновлена и переработана, чтобы охватить последние изменения, внесенные C++14 и C++17.
C++ Concurrency in Action (2019)
Автор: Anthony Williams
Данная книга написана для программистов, желающих углубиться в тему многопоточности на C++. В ней подробно описано использование полезных особенностей языка, а также приведены типичные ошибки и готовые решения проблем разработки приложений с использованием нескольких потоков. Книга была обновлена и переработана, чтобы охватить последние изменения, внесенные C++14 и C++17.
#video
В видео рассказывается, как и почему нужно соблюдать принципы SOLID на C++.
https://youtu.be/PakbXnLht1I
В видео рассказывается, как и почему нужно соблюдать принципы SOLID на C++.
https://youtu.be/PakbXnLht1I
YouTube
How to write SOLID C++
We all know, or should know, about SOLID. The question is, do we write C++ according to the SOLID principles?
This is a quick tutorial on how to apply the SOLID principles using the C++ programming language. You can find it in a written form at: https:/…
This is a quick tutorial on how to apply the SOLID principles using the C++ programming language. You can find it in a written form at: https:/…
#article
Введение в спортивное программирование на C++.
https://dev.to/educative/introductory-guide-to-competitive-programming-with-c-81c
Введение в спортивное программирование на C++.
https://dev.to/educative/introductory-guide-to-competitive-programming-with-c-81c
DEV Community
Introductory Guide to Competitive Programming with C++
This article was written by Aaron Xie and was originally published at Educative. To many, competitiv...
#example
Декларатор ссылки lvalue: &
Содержит адрес объекта, но синтаксически ведет себя подобно объекту.
Ссылку lvalue можно считать другим именем для объекта. Объявление ссылки lvalue состоит из необязательного списка спецификаторов, за которым следует декларатор ссылки. Ссылка должна быть инициализирована и не может быть изменена.
Любой объект, адрес которого можно преобразовать в некоторый тип указателя, можно также преобразовать в аналогичный ссылочный тип. Например, любой объект, адрес которого можно преобразовать в тип char *, можно также преобразовать в тип char &.
В примере демонстрируется декларатор ссылки путем объявления объекта Person и ссылки на этот объект. Поскольку rFriend является ссылкой на myFriend, при обновлении любой из этих переменных изменяется один и тот же объект.
Декларатор ссылки lvalue: &
Содержит адрес объекта, но синтаксически ведет себя подобно объекту.
Ссылку lvalue можно считать другим именем для объекта. Объявление ссылки lvalue состоит из необязательного списка спецификаторов, за которым следует декларатор ссылки. Ссылка должна быть инициализирована и не может быть изменена.
Любой объект, адрес которого можно преобразовать в некоторый тип указателя, можно также преобразовать в аналогичный ссылочный тип. Например, любой объект, адрес которого можно преобразовать в тип char *, можно также преобразовать в тип char &.
В примере демонстрируется декларатор ссылки путем объявления объекта Person и ссылки на этот объект. Поскольку rFriend является ссылкой на myFriend, при обновлении любой из этих переменных изменяется один и тот же объект.
#video
Введение в Conan - мультиплатформенный менеджер пакетов для C/C++, который позволяет создавать и распространять двоичные файлы.
https://youtu.be/rsFA2VXwxbE
Введение в Conan - мультиплатформенный менеджер пакетов для C/C++, который позволяет создавать и распространять двоичные файлы.
https://youtu.be/rsFA2VXwxbE
#article
Полиморфные аллокаторы, std::vector
Концепция полиморфного аллокатора из C++17 является расширением стандартных аллокаторов из STL.
https://www.cppstories.com/2020/06/pmr-hacking.html/
Полиморфные аллокаторы, std::vector
Концепция полиморфного аллокатора из C++17 является расширением стандартных аллокаторов из STL.
https://www.cppstories.com/2020/06/pmr-hacking.html/
C++ Stories
Polymorphic Allocators, std::vector Growth and Hacking
The concept of a polymorphic allocator from C++17 is an enhancement to standard allocators from the Standard Library.
It’s much easier to use than a regular allocator and allows containers to have the same type while having a different allocator, or even…
It’s much easier to use than a regular allocator and allows containers to have the same type while having a different allocator, or even…
#example
Перегрузка операторов
Ключевое слово operator позволяет изменить работу конкретного оператора с экземплярами класса. Это дает оператору дополнительное значение — "перегружает" его. Компилятор различает разные значения оператора, проверяя типы его операндов.
В примере оператор + перегружается для сложения двух комплексных чисел.
Перегрузка операторов
Ключевое слово operator позволяет изменить работу конкретного оператора с экземплярами класса. Это дает оператору дополнительное значение — "перегружает" его. Компилятор различает разные значения оператора, проверяя типы его операндов.
В примере оператор + перегружается для сложения двух комплексных чисел.