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

    +12.1

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    class TIntArray
    {
    	char buf[10000];
    	int operator[](int Index);
    };
    
    ...
    
    void main()
    {
    	TIntArray a;
    	...
    	memset(&a[1],0.0f,sizeof(TIntArray));
    	...
    };

    Меня этот кот довёл до слёз...

    Запостил: Говногость, 18 Августа 2009

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

    • Инкапсуляция во все поля.
      Ответить
      • Чего?
        Ответить
        • Типа автор считает что даже обычные массивы нужно оборачивать в класс и делать к ним собственные костыли для доступа.
          Ответить
          • Ну да. Так сейчас все делают. У меня все массивы в обьектах.
            Это удобно тем, что можно передавать массив любой размерности в функцию без дикого синтаксиса.
            К томуже у меня там есть все необходимые функции для работы с массивом:
            *Иттератор.
            *Поиск.
            *Иттератор.
            *Замена.
            *Вставка.
            *Сортировка.
            *Возможности для создания циклического массива.
            *Даже копирование из массива в массив.
            *И тд.

            Вообщем удобно очень.
            Ответить
    • 1)char buf[10000];
      Видимо пацанчик зарезервировал максимально возможное значение длинны для массива 10000 в его проЭкте.

      2)char buf[10000];
      Выбрал подходящий тип массива для хранения int.

      3)int operator[](int Index);
      Мне интересно, эта программа когда либо работала?
      Нужно: int& operator[](int Index);

      4)memset можно использовать для объектов?

      5)sizeof(TIntArray) - стопудова вернёт длинну массива.

      6)&a[1] - он всю жизнь на паскале программировал? Может &a[0]?
      Ответить
      • Злой(((
        Ответить
      • memset можно смело использовать только для POD-объектов.
        Хотя в данном примере это не POD-объект (по определению С++, т.к. содержит метод), но ничего плохого не должно произойти.
        Ответить
    • Ничего страшного не произойдет, т.к. это не скомпилируется. Поля то все private по умолчанию.
      Ответить
      • Час от часу, но раз в сто лет компилятор может выстрелить...
        Ответить
        • Да. Я уважаемый менеджер компьютерной фирмы и застрелил бы такого сотрудника, притом не раз в сто лет, а много раз.
          Ответить
    • Ну учитывая, что он делает memset не объекту (не POD кстати), а по адресу временного возвращаемого оператором [] инта. =)))
      Ответить

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