Инициализатор в if и switch
Вам должна понравиться такая возможность из С++17. Теперь вы можете выполнять инициализацию переменных и проверять условие внутри if или switch. Это даёт сделать код более лаконичным и чистым. Общая форма:
Вам должна понравиться такая возможность из С++17. Теперь вы можете выполнять инициализацию переменных и проверять условие внутри if или switch. Это даёт сделать код более лаконичным и чистым. Общая форма:
if (init-statement(x); condition(x)) {
// some code
}
else { // в else тоже видно x
// some more code
}Кортежи
Как и пара, кортеж представляет собой набор значений фиксированного размера для различных типов данных.
Иногда удобнее использовать
Как и пара, кортеж представляет собой набор значений фиксированного размера для различных типов данных.
Иногда удобнее использовать
std::array вместо кортежа. Такой массив подобен обычному массиву в Си вместе с несколькими функциями стандартной библиотеки C++. Эта структура данных была добавлена в 11 версии C++.this удобно использовать для цепочных вызовов
Мы можем вернуть ссылку на объект, на котором мы вызываем метод класса:
Мы можем вернуть ссылку на объект, на котором мы вызываем метод класса:
Foo &set(int x) { this->x = x; return *this; }
Здесь метод set возвращает ссылку на объект класса Foo(Foo&). Такая реализация метода позволяет нам писать код, подобный этому:obj.set(2).set(8);Это возможно, поскольку первый вызов метода set возвращает указатель на объект obj. Второй метод вызывается на объекте obj, т. е. можно переписать код так:
obj = obj.set(2);
obj = obj.set(8);Для тех кто в танке: this — это указатель на объект, из которого мы вызываем метод. С помощью указателя this и оператора -> можно обратиться к полям класса. Например так:
void getX() { return this->x; }
В большинстве случаев мы можем опустить часть this-> и написать просто x.Различие локальной переменной и поля класса с одинаковым именем
Указатель this может быть полезен в случае, когда локальная переменная в методе имеет то же самое имя, что и поле объекта:
Указатель this может быть полезен в случае, когда локальная переменная в методе имеет то же самое имя, что и поле объекта:
void set(int x) { this->x = x; }
Здесь в методе set мы присваиваем полю класса x значение локальной переменной this. Чтобы различить поле класса x и локальную переменную с тем же именем мы используем запись this->x при обращении к полю класса.this является const указателем
Указатель this является неизменяемым указателем. Убедимся это на примере:
Попробуем вызвать метод change в методе main:
Указатель this является неизменяемым указателем. Убедимся это на примере:
class Foo {
private:
int x;
public:
Foo(int x = 0) { this->x = x; }
void change(Foo *foo) { this = foo; }
void print() { cout << x << endl; }
};
Здесь в методе change мы пытаемся присвоить указателю this новое значение.Попробуем вызвать метод change в методе main:
Foo obj (3);
Foo *ptr;
obj.change(ptr);
obj.print();
Если мы запустим код, то получим ошибку компиляции в методе change (lvalue required as left operand of assignment). Компилятор не позволяет нам изменить значение указателя this.Создание кроссплатформенного мобильного и настольного приложения с помощью Qt 6.2.
https://16bpp.net/blog/post/making-a-cross-platform-mobile-desktop-app-with-qt-62/
https://16bpp.net/blog/post/making-a-cross-platform-mobile-desktop-app-with-qt-62/
Senior C++ Developer
this является const указателем Указатель this является неизменяемым указателем. Убедимся это на примере: class Foo { private: int x; public: Foo(int x = 0) { this->x = x; } void change(Foo *foo) { this = foo; } void print() { cout << x <<…
Указатель this доступен только внутри нестатических методов класса
Попробуем добавить такой метод в наш класс:
Это объясняется тем, что указатель this передаётся только в нестатические методы класса как скрытый параметр. В статических методах он недоступен.
Попробуем добавить такой метод в наш класс:
static void set(int x) { this->x = x; }
Здесь мы добавили для метода setмодификатор static.obj.set(6);
Мы получим ошибку компиляции: ‘this’ is unavailable for static member functions.Это объясняется тем, что указатель this передаётся только в нестатические методы класса как скрытый параметр. В статических методах он недоступен.
Курс современного C++ | Боннский университет, Германия.
https://youtube.com/playlist?list=PLgnQpQtFTOGR50iIOtO36nK6aNPtVq98C
https://youtube.com/playlist?list=PLgnQpQtFTOGR50iIOtO36nK6aNPtVq98C
Лучшие способы преобразования перечисления в строку.
https://belaycpp.com/2021/08/24/best-ways-to-convert-an-enum-to-a-string/
https://belaycpp.com/2021/08/24/best-ways-to-convert-an-enum-to-a-string/
Список рекомендуемых практик безопасного программирования на С++.
https://www.incredibuild.com/blog/top-10-secure-c-coding-practices
https://www.incredibuild.com/blog/top-10-secure-c-coding-practices
incredibuild
Top 10 secure C++ coding practices - incredibuild
Writing secure code that is not open for hacks and attacks is not a luxury. Learn about the top 10 secure C++ coding practices in this blog.
PartialExecuter: уменьшение размера WebAssembly за счет изучения всех выполнений в LLVM.
https://medium.com/leaningtech/partialexecuter-reducing-webassembly-size-by-exploring-all-executions-in-llvm-f1ee295e8ba
https://medium.com/leaningtech/partialexecuter-reducing-webassembly-size-by-exploring-all-executions-in-llvm-f1ee295e8ba
Medium
PartialExecuter: Reducing WebAssembly size by exploring all executions in LLVM
Adding a new IR optimization that allows to compile unused code away in Cheerp. Idea generation, pseudo-code, and some magic with graphs.
Функция strrchr()
В C++ strrchr() - это предопределенная функция, используемая для обработки строк. Эта функция возвращает указатель на всю строку после последнего появления заданного символа. Символ, последнее вхождение которого мы хотим найти, передается в качестве второго аргумента функции, а строка, в которой мы должны найти этот символ, передается в качестве первого аргумента функции.
В примере кода на картинке мы используем функцию для того, чтобы найти порядковый номер символа в заданной строке.
В C++ strrchr() - это предопределенная функция, используемая для обработки строк. Эта функция возвращает указатель на всю строку после последнего появления заданного символа. Символ, последнее вхождение которого мы хотим найти, передается в качестве второго аргумента функции, а строка, в которой мы должны найти этот символ, передается в качестве первого аргумента функции.
В примере кода на картинке мы используем функцию для того, чтобы найти порядковый номер символа в заданной строке.
libriscv: многопроцессорность для вычислительных функций.
https://fwsgonzo.medium.com/multiprocessing-in-a-risc-v-emulator-ce910122f4f1
https://fwsgonzo.medium.com/multiprocessing-in-a-risc-v-emulator-ce910122f4f1
Medium
libriscv: Multiprocessing for Compute Functions
Using tiny forked VMs to accelerate compute functions (for personal projects)