?

Log in

No account? Create an account
   Journal    Friends    Archive    Profile    Memories
 

boost::shared_ptr - morfizm


Aug. 23rd, 2013 02:10 am boost::shared_ptr

Вот что получается, когда люди пытаются и рыбку съесть performance получить хороший, и robustness:

  const boost::shared_ptr<mytype>& my
Это убивает задумку shared pointer'ов, т.к. если передавать сами pointer'ы by reference, не происходит инкремента ref count'а. Do this NOT.

5 comments - Leave a commentPrevious Entry Share Next Entry

Comments:

From:archaicos
Date:August 23rd, 2013 09:59 am (UTC)
(Link)
C++ has got many more bullets than C, so shooting yourself in the foot is more spectacular.
From:balmerdx
Date:August 23rd, 2013 11:45 am (UTC)
(Link)
И в чем же проблема? Область видимости такая, что ref не декрементируется пока функция не закончит выполнение.

Конечно если такой код в конструкторе класса созданном по new, который живет дольше, чем референс на который ссылается - то будет плохо. Но эта проблемма не специфична для reference, а общая для всех ссылочных переменных.
From:_m_e_
Date:August 23rd, 2013 04:40 pm (UTC)
(Link)
присоединяюсь к предыдущему оратору.

Я бы понял меме, если бы там было I STORE THEM BY VALUE. Но pass by reference выглядит абсолютно нормальным.

Настоящий shared_ptr<> (а не ссылка) уже существует где-то выше в нашем scope. Зачем его копировать? Вот если переводить его в другой scope, скажем сохранять в классе - тогда надо конечно value. Но надеюсь что поле типа shared_ptr<>& мало кто додумается создать.
From:_m_e_
Date:August 23rd, 2013 04:54 pm (UTC)
(Link)
Herb agrees with me
http://channel9.msdn.com/Shows/Going+Deep/C-and-Beyond-2011-Scott-Andrei-and-Herb-Ask-Us-Anything
начиная где-то с 4:30, или можно начать сразу с 5:50, или с 7:10 совсем уж по теме.
From:dennyrolling
Date:August 23rd, 2013 06:24 pm (UTC)
(Link)
что нам какой-то мифический Херб, вот аруслан на кружочках пишет что только по значению, только хардкор.

зато я вот лично все объекты передаю только по ссылке!