Pull to refresh
231
0
Всеволод @torkve

Пользователь

Send message
Учтите, что вы им вредите этой статьёй.
Да, безусловно. Для более сложных случаев нужен std::swap и всё в этом духе.
> Я вообще не очень понимаю, как можно возвращать ссылку на локальную переменную, хоть она и rvalue (в первом случае), это ведь UB, не?
Никак нельзя конечно. Автор собственно об этом и пишет и поэтому принимает решение изменить сигнатуру оператора, чтобы он возвращал rvalue вместо ссылки.
Ой, да, конечно же, я опечатался. Спасибо.
> Vector3& operator = (const Vector3 &v)
> Vector3 operator = (const Vector3 &v)

Вы творите что-то страшное. Ущербность кода
Vector3& operator = (const Vector3 &v) {
  ...
  return Vector3(...);

вы поняли, но сделали из этого в корне неверный вывод: возвращать rvalue (новый объект).
Согласно негласным общепринятым правилам, результат подобных модифицирующих операций (=, +=, ++ и т.п.) можно присваивать. Но присваивать не только новому объекту, но и ссылке:
Vector3& a = (b += c);

Чисто из семантики это означает, что мы модифицировали b, и создали ссылку на b, т.е. c и b указывают на один и тот же объект, Это означает, что если я сделаю a.x = 42, то и b.x будет равен тому же. Вы же возвращаете новый объект, и такое присвоение невозможно, а даже если бы и удалось, то в итоге a и b указывали бы на разные объекты с одним и тем же значением.
Такие операторы корректно писать так:
Vector3& operator = (const Vector3 &other)
{
    if (this != &other) // если кто-то напишет "a = a;", лучше всего ничего не делаеть
    {
         x = other.x;
         y = other.y;
         z = other.z;
    }
    return *this;
}

Таким образом мы после модификации возвращаем именно себя и позволяем нормально работать с ссылками на объект без выделения дополнительной памяти.
Альтернативный способ с возвратом нового объекта, который очень изредка имеет смысл — это хранить в объекте не сами инты, а ссылки на них (и принимать ссылки в конструкторе). Но тогда надо видоизменять ваш класс.
Знаю, что шансов мало (я их и сам когда-то просил включить HSTS на online.sberbank.ru, о чём получил классический ответ ни о чём), но вы всё-таки попробовали бы написать им в саппорт.
Тем, что можно, например, вызвать код вида
void do_some_job(const T& x) { ... }

do_some_job(T());

без боязни утечки или накладных расходов на создание/дестрой умного указателя.
В большинстве компиляторов есть, например, оптимизация памяти в некоторых случаях, если аргументом функции является const T&.
А у вас какая-нибудь гостевая парковка предусмотрена или надо парковаться в окрестностях?
С перехватом паролей всё понятно. Я не очень понял, можно ли таким образом дистанционно узнать и подменить IMSI, на который смотрят банки. Ваше второе исследование, как я понял, делает это путём физического доступа к симке.
Я не очень в курсе, как работает атака из поста, но сбер или тинькофф, например, детектят смену сим-карты. Возможно, конечно, с такой атакой можно номер симки тоже сэмулировать.
Я думаю и даже знаю, что до сих пор есть современные проекты, которые пишут на ASP (не ASP.Net) и PHP4. Но надо ж как-то из анабиоза выходить.
<сарказм>А что же делать с VC 6, она же наверное эти вообще шаблоны не скомпилирует</сарказм>
На всякий случай: это есть в стандарте
#include <stdint.h>

uint32_t x = 42;
Копировать диски и читать мануалы я умею и сам, спасибо. Мне просто неуютно видеть упоминание себя в качестве «админа» и фразу «надо было конечно перед использованием проверить на что они влияют» от одного и того же человека.
То есть Вы нашли в интернете какую-то команду с параметрами, не разобрались, что она делает, и теперь тупо её распространяете? Я ничего не перепутал?
Про вектор указателей согласен.
Про «C++-специфичный» — нет, это достаточно стандартный термин для обозначения одномерного массива. Хотя в данном случае конечно он устроен именно как вектор в C++.
Кажется, всю статью надо просто заменить на фразу «list в python — это на самом деле vector» где-нибудь в стандартной документации.
С этим я и не подумаю спорить, боже упаси) Но я там выше привёл пример даже очень маленького диффа — замена тела функции из трёх строк на четыре других строки.

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Registered
Activity