对象删除:是否使用父对象

met*_*dos 3 c++ qt initialization delete-operator

你更喜欢哪一个删除对象?特别是在QT,但也欢迎其他做法.这两个选择对我来说是一样的,是吗?

  1. 绑定到另一个类,并在它被销毁时销毁.

    SomeClass::SomeClass{
     socket_ = new QTcpSocket(this);
    }
    
    Run Code Online (Sandbox Code Playgroud)

要么

  1. 在类的析构函数中销毁

    SomeClass::SomeClass{
     socket_ = new QTcpSocket();
    }
    
    SomeClass::~SomeClass{
     delete socket_;
    }
    
    Run Code Online (Sandbox Code Playgroud)

cha*_*lup 8

在罗马做到入乡随俗.如果您的框架使用一种方法(例如Qt依赖于父子关系),请在代码中使用此方法.

当然不要忘记一般良好的内存管理实践:尽可能在堆栈上创建对象,使用共享指针等.