Chi*_*iel 5 c++ class smart-pointers
为什么C++在Parent课前破坏了这个Child类?当一个对象超出范围首先破坏shared_ptrs然后自毁时,它是否更合乎逻辑?在我的工作流程中,这会导致问题,因为我的Parent类正在管理Child类使用的接口.
#include <iostream>
#include <memory>
class Child;
class Parent
{
    public:
        Parent() :
            child(std::make_shared<Child>())
        { 
            std::cout << "Constructing parent" << std::endl;
        }
        ~Parent() { std::cout << "Destructing parent" << std::endl; }
    private:
        std::shared_ptr<Child> child;
};
class Child
{
    public:
        Child()
        { 
            std::cout << "Constructing child" << std::endl;
        }
        ~Child() { std::cout << "Destructing child" << std::endl; }
};
int main()
{
    Parent parent;
    return 0;
}
编辑
 
根据评论,我觉得我的问题需要更多的解释.我的子类都被分配std::shared_ptr,当父类超出范围时释放.我的主程序是CUDA程序,父程序可以访问GPU设备.如果父项被删除,我将无法再访问GPU.然而,孩子们的析构函数需要释放他们的GPU内存,因此我希望在父母退出范围之前采取这一行动.但这意味着我必须手动删除智能指针,在我看来,这有点挫败了他们的目的.
| 归档时间: | 
 | 
| 查看次数: | 420 次 | 
| 最近记录: |