Кресты / Говнокод #12150 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
template<class T>
class Box
{
private:
	explicit Box(const Box&);
	Box& operator = (const Box&);
public:
	explicit Box()
		: m_value(0)
	{}
	explicit Box(T* value)
		: m_value(value)
	{}
	~Box()
	{
		std::auto_ptr <T> toDelete(m_value);
	}
	T* Release()
	{
		T* const result(m_value);
		m_value = 0;
		return result;
	}
	void Reset(T* value)
	{
		std::auto_ptr <T> toDelete(m_value);
		m_value = value;
	}
private:
	T* m_value;
};

Запостил: Setry Setry, (Updated )

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

  • Встречено в коммерческом проекте. Может я чего не понимаю?
    Ответить
  • А чем Box с закрытыми конструкторами копирования и оператором присваивания лучше того же std::auto_ptr? Судя по всему, роль у них примерно одинаковая: единолично владеть указателем на объект. Так читабельнее и понятнее автору? Тем, что, в отличие от auto_ptr, не затрёт указатель при копировании?
    Ответить
    • Вразумительного ответа от автора я не смог добиться. Меня больше всего убивает оборачивание в std::auto_ptr в деструкторе и reset.
      Ответить
      • > оборачивание в std::auto_ptr в деструкторе и reset
        Ведь в книжке написано, что вызывать деструктор явно - очень опасно, пусть грязную работу делает auto_ptr
        Ответить
        • Просто не барское это дело. Пусть грязную работу делает холоп^W auto_ptr
          Ответить
  • Меня больше убивает сама возможность вот так брать все эти умные указатели , и инициализировать их указателем, жившим и раньше. Не тем, которые получены прямо на месте по оператору new, а тем, которые можно получить даже так:
    std::unique_ptr<int>a ( new int);
    std::unique_ptr<int>b ( &(*a) );

    В связи с тем, что новый стандарт позволяет писать
    std::unique_ptr<Foo>a(x,y,z) (будет вызван Foo(x,y,z)), я предлагаю выпилить smart_ptr(T*) нахуй.
    Ответить
      • Складывается такое впечатление, что он не только телефон свой неправильно держит ....
        Ответить
          • Ой ты ж блядь крестоблядь, оказывается, это крестосмартные пэтээры надо дуить не вронгно, а именно правильным образом, и только тогда они работают как надо!
            Ответить
            • >крестосмартные пэтээры надо дуить не вронгно
              Прочёл этот мультиязыковой пиздец с третьего раза.
              Ответить

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

Я, guest, находясь в здравом уме и твердой памяти, торжественно заявляю:

    А не использовать ли нам bbcode?


    8