您更喜欢删除对象?特别是在QT,但也欢迎其他做法。这两个选择对我来说是一样的,是吗?
绑定到另一个类,并在它被销毁时销毁。
SomeClass::SomeClass{
socket_ = new QTcpSocket(this);
}
或
在类
的析构函数中销毁SomeClass::SomeClass{
socket_ = new QTcpSocket();
}
SomeClass::~SomeClass{
delete socket_;
}
答案 0 :(得分:8)
在罗马时,像罗马人一样。如果您的框架使用一种方法(例如Qt依赖于父子关系),请在代码中使用此方法。
当然不要忘记一般良好的内存管理实践:尽可能在堆栈上创建对象,使用共享指针等。
答案 1 :(得分:3)
RAII说你应该在SomeClass
的析构函数中做到这一点。根据该哲学,SomeClass
实例拥有QTcpSocket
实例,因此前者应该完全管理后者的生命周期。虽然这两种方法都是有效的,但我认为我更喜欢那种不需要delete this
的方法。
答案 2 :(得分:0)
对我来说,我认为最好选择编写代码的简短方法(1),但要记住最佳实践,因为Qt会为你做(破坏用户定义的变量)。