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

    +27

    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
    16. 16
    17. 17
    18. 18
    template<class T>
    class TAbstractObject
    {
    private:
    	T Value;
    public:
    	bool operator==(TAbstractObject& Obj);
    };
    
    ...
    
    template<class T>
    bool TAbstractObject<T>::operator==(TAbstractObject<T>& Obj)
    {
    	...
    	Value++;
    	...
    };

    Код в мешке...

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

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

    • я <T> случайно стёр.
      Ответить
      • это типа код считает количество операций сравнения произведенных над данным обьектом?
        Ответить
        • Сомневаюсь. Думаю именно, неожиданно для пользователя меняет значение. Там какой-то хак задумывался... Сейчас весь код уже не найду. Там это очень весело смотрелось. А мы об этом и не знали...
          Ответить
    • Ну и кота в мешке подсунули...
      Ответить
    • Хм... Такая штука (исключая побочности, которых мы не видим) подсчитает число сравнений, в которых наш объект был слева, к защищённой области правого операнда доступа нет.
      И, казалось бы, принято передавать в такие вещи константную ссылку, чтобы злоумышленник не попорти чего.
      А то вот так зажмёт лису заяц между двух берёзок да всю девичью честь и нарушит...
      Ответить
    • Такие вещи надо так объявлять от греха подальше:
      bool operator==(const TAbstractObject& Obj) const;
      Ответить
      • Точно. И для константных объектов будет работать.
        Ответить

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