在《C++标准库》的第91页中,我读到了有关shared_from_this()
的内容:
问题在于,
shared_ptr
将自己存储在Person
基类的私有成员enable_shared_from_this<>
中,在 Person 构造函数结束时。
书中相关的代码片段如下:
class Person : public std::enable_shared_from_this<Person> {
...
};
我不理解这两件事:
shared_ptr
存储了谁?- 在
Person
构造函数结束时,它是如何将自己存储在任何地方的?我认为Person
的构造函数以由我编写的最后一条语句结束。
我知道有一个尚未初始化的weak_ptr
。
编辑:
感谢Angew! 在创建第一个指向 Person
的shared_ptr
之后,shared_from_this
才会起作用。 这个 shared_ptr
将检查 Person
类是否继承了 enable_shared_from_this
,如果是,则初始化其内部的 weak_ptr
。