你更喜欢哪一个来删除对象?特别是在 QT 中,但也欢迎其他做法。这两个选择对我来说似乎相同,是吗?
绑定到另一个类,并在销毁时销毁。
SomeClass::SomeClass{ socket_ = new QTcpSocket(this); }
或者
在类的析构函数中销毁
SomeClass::SomeClass{ socket_ = new QTcpSocket(); } SomeClass::~SomeClass{ delete socket_; }
你更喜欢哪一个来删除对象?特别是在 QT 中,但也欢迎其他做法。这两个选择对我来说似乎相同,是吗?
绑定到另一个类,并在销毁时销毁。
SomeClass::SomeClass{
socket_ = new QTcpSocket(this);
}
或者
在类的析构函数中销毁
SomeClass::SomeClass{
socket_ = new QTcpSocket();
}
SomeClass::~SomeClass{
delete socket_;
}
在罗马做到入乡随俗。如果您的框架使用一种方法(例如 Qt 依赖于父子关系),请在您的代码中使用此方法。
当然不要忘记一般的良好内存管理实践:尽可能在堆栈上创建对象,使用共享指针等。
RAII 说你应该在SomeClass
. 根据该哲学,SomeClass
实例拥有QTcpSocket
实例,因此前者应该完全管理后者的生命周期。虽然这两种方法都是有效的,但我认为我更喜欢不需要我的方法delete this
。
对我来说,我认为最好选择编写代码的捷径(1),但要考虑到最佳实践,因为 Qt 会为您执行此操作(销毁用户定义的变量)。