Я сейчас читаю через расширения C ++ TR1 и начал фокусироваться на std :: tr1 :: shared_ptr.
Итак, я прочитал, что могу объявить и инициализировать shared_ptr <> с помощью этого кода:
class foo {};
std::tr1::shared_ptr<foo> fsp(new foo);
std::tr1::shared_ptr<foo> fps2(fsp); // (1) init using first sp
Теперь я читаю о enable_shared_from_this (http://msdn.microsoft.com/en-us/library/bb982611%28v=VS.90%29.aspx) и вижу этот пример:
class foo : public enable_shared_from_this<foo> {};
std::tr1::shared_ptr<foo> fsp(new foo);
std::tr1::shared_ptr<foo> fps2 = fsp->shared_from_this(); // (2) init using first sp
Мой вопрос: почему я хотел бы использовать shared_from_this по сравнению с инициализацией?Я пометил как «(1) init используя first sp».
Я прочитал статью В чем полезность `enable_shared_from_this`? и теперь лучше понимаю ее полезность.
Но это оставляет меня открытым, в порядке ли мой "(1) init, использующий first sp", или с какими минусами я мог столкнуться, используя его.