В чём разница между std::addressof<>(var)
и &var
?
int var = 42;
std::cout << std::addressof(var);
std::cout << '\n';
std::cout << &var;
Разница в том, что унарный оператор &
может быть перегружен для класс- или enum-типов, делать что-то постороннее и возвращать что-то, не имеющее никакого отношения к адресу объекта. А std::addressof
всегда возвращает именно адрес объекта. Например, при написании шаблонного кода для получения адреса объекта некоего обобщенного типа T
следует использовать именно std::addressof
, а не унарный &
- тем самым вы защитите свой шаблонный код от "неожиданностей".
Для int var
разницы никакой нет.
std::addressof
нельзя использовать для получения адреса нестатического метода или поля класса.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Нужно было реализовать логику для замены строки в текстовом файлеПрименял разные схемы, но остановился на самом лаконичном, как мне кажется:
Вот собственно код дата прилетает формата 05 ноя 18, 20:51 В среде всё работает, но когда я компилирую файл и запускаю его через командную строку,...
Нужно создать класс со статическим методом, для сортировки массиваНапример по маршруту