shared_from_this是 C++11 中引入的功能,允许对象在继承了std::enable_shared_from_this的情况下,安全地生成自身的std::shared_ptr实例,而不会创建新的控制块(reference counting block)。这样可以避免悬垂指针的问题,特别是在对象的成员函数中使用时,可以确保对象在使用期间不被销毁。 下面是一个简单的例子: #inc...
该类在使用的时候,通过先调用Create()来实例化一个对象,并且返回一个指向该对象的shared_ptr对象,然后通过该智能指针对象调用GetPtr方法从而间接调用shared_from_this方法,之后就像上面所讨论的那样,通过从基类std::enable_shared_from_this<Test>继承的成员变量__weak_this_来构建shared_ptr对象并返回 通过上面讨论得...
shared_from_this()的用途 资源对象的成员方法(不包括构造函数和析构函数)需要获取指向对象自身,即包含了this指针的shared_ptr 使用原因 1.把当前类对象作为参数传给其他函数时,为什么要传递share_ptr呢?直接传递this指针不可以吗? 一个裸指针传递给调用者,谁也不知道调用者会干什么?假如调用者delete了该对象,而sh...
enable_shared_from_this是一个模板类,定义于头文件,其原型为: template< class T > class enable_shared_from_this; std::enable_shared_from_this 能让一个对象(假设其名为 t ,且已被一个 std::shared_ptr 对象 pt 管理)安全地生成其他额外的 std::shared_ptr 实例(假设名为 pt1, pt2, ... ) ,...
1、shared_from_this 几个值得注意的地方shared_from_this()是 enable_shared_from_this<T>的成员函数,返回 shared_ptr<T> 。首先需要注意的是, 这个函数仅在 shared_ptr<T> 的构造函数被调用之后才 能使用。原因是 enable_shared_from_this:weak_ptr 并不在构 造函数中设置,而是在...
shared_ptr<T>shared_from_this(); 1. 2. 3. 这个东西的引入是为了解决下面的这个问题: 某个类的对象内存的生命周期由智能指针来管理,此时要在一个类的成员函数中,对外部返回shared_ptr构造的this指针会有问题。注意这里返回原生的this指针是可以的。
关于shared_from_this的问题,这是一个C++中用于创建智能指针的函数,它用于创建一个std::shared_ptr对象,该对象共享当前对象的所有权。shared_from_this是一个成员函数,需要在类中定义并实现。 在使用shared_from_this之前,需要在类中包含std::enable_shared_from_this基类,并在构造函数中初始化它。例如: 代码语言...
在使用shared_from_this之前,必须在类中添加如下代码: class MyClass : public std::enable_shared_from_this<MyClass> { }; 这里,MyClass继承自std::enable_shared_from_this<MyClass>,它将为MyClass提供shared_from_this函数。 使用shared_from_this需要满足以下条件: 1.该对象必须是用shared_ptr创建的。
在使用shared_from_this()之前,必须确保存在至少一个shared_ptr对象来管理该类的生命周期,否则会抛出std::bad_weak_ptr异常。 不要在类的构造函数中调用shared_from_this(),因为在构造函数中shared_ptr还没有创建。 这个特性在实际开发中非常有用,可以避免手动管理对象的生命周期,减少内存泄漏和悬空指针的...