1. C++ / Говнокод #2472

    +144.8

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    string& operator+= (string const& str)
        {
            if(const size_t str_size = str.size())
                _c_str = (char*)memcpy((char*)realloc(_c_str, _size+str_size+1)+_size, str.c_str(), str_size+1)-_size, //0_o
                _size += str_size;
            return *this;
        }

    Запостил: GovnocoderJr, 22 Января 2010

    Комментарии (28) RSS

    • Зато в 7 строчек уложился.
      А на out of memory пофиг как всегда.
      Ответить
    • кто-нить, обрубите ему руки
      Ответить
      • Зачем? По-моему, абсолютно прозрачный код, хоть я и не сишник.
        Ответить
        • А по-моему код плохо читается; я бы точно в этом случае временные переменные использовал. Только за использование запятой как тут руки надо отрубать.
          Ответить
          • А ты параметры через пробел пишешь? Или смайлик ставишь?)

            Upd: пардон, понял о чем)
            Ответить
    • omg
      Ответить
    • А почему str.size() не использовать? Его все равно заоптимизируют, небось?
      Ответить
      • Наверное потому что "str.size()" неудобнее писать. Я бы вот тоже отдельную переменную завёл, чисто из эстетических соображений.
        Ответить
        • Всего-то два лишних символа, а лишнее нажатие клавиши всего одно. Супротив объявления с констом, свистелками и перделками.
          Ладно, сойдемся на том, что мне больше импонирует эстетика минимализма:)
          Ответить
          • // тот же guest
            Упс, я плохо просмотрел код. Согласен с вами, str_size тут не нужен. Разрешаю вам минуснуть мой предыдущий пост :)
            Ответить
    • Друзья, у меня к вам вопрос:
      А что вернёт realloc, вслучае если ей не удалось расширеть буфер, например не хватило памяти?
      Ответить
      • NULL
        hint: man 3 realloc
        Ответить
        • >hint: man 3 realloc
          Что это значит? Что только три раза можно реалочить? O_o
          Ответить
    • Где здесь С++?
      Ответить
    • Еще интересно, чем может закончится вот это:
      string a = "bla-bla-bla";
      a+=a;
      Ответить
      • Будет:
        string a = "blя-blя-blя";
        a+=a;
        Ответить
      • Что такое string? Может std::string? Или на чем ты пишешь?
        Ответить
        • Встречный вопрос: а что такое string в исходном примере?
          Ответить
          • Там можно заметить c_str, size() и тд специфичные... и я вот только щас понял, что ступил)) Ооооооочень жестко. Заработалсо, извини)
            Ответить

    Добавить комментарий