gpt4 book ai didi

c++ - enable_shared_from_this 需要什么?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:06:49 27 4
gpt4 key购买 nike

<分区>

我是 C++11 的新手,我遇到了 enable_shared_from_this。我不明白它试图达到什么目的?所以我有一个使用 enable_shared_from_this 的程序。

struct TestCase: enable_shared_from_this<TestCase>
{
std::shared_ptr<testcase> getptr() {
return shared_from_this();
}

~TestCase() { std::cout << "TestCase::~TestCase()"; }
};


int main()
{
std::shared_ptr<testcase> obj1(new TestCase);
std::shared_ptr<testcase> obj2 = obj1->getptr();
// The above can be re written as below
// std::shared_ptr<testcase> obj2 = shared_ptr<testcase>(obj1);
}

我的问题是,当我需要指向“this”的指针时,为什么不使用 obj 本身。为什么要从那个类的函数返回一个“this”,比如使用 getptr() 然后返回 shared_from_this()????我不明白。

第二个问题,如果不使用 enable_shared_from_this,为什么 dtor 调用两次会产生问题,崩溃!!!!

我可以使用 enable_shared_from_this 绕过的另一种方法是这样的。在类 TestCase 中添加这个

  std::shared_ptr getptr1(shared_ptr obj) {
return std::shared_ptr(obj);
}

然后从 main 调用这个:

  std::shared_ptr bp2 = bp1->getptr1(bp1);

完成了。我们不需要 enable_shared_from_this。为什么我们需要它??

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com