梦想的彼岸花开 2024-03-25 09:47 采纳率: 77.8%
浏览 26

QT 成员对象指针析构的问题

QT Widget mainWnd 类有一个成员变量 QWidget * m_pToolWidget,我在构造函数中 new 了 一个 QWidget 对象,并用指针指向它,我需要在 new 的时候传入 this 指针么?如果不传,那么在 mainWnd 的析构函数中需要 delete 这个对象指针吗?

QMainWnd(QWiget * pParent)
{
  m_pToolWidget = new QWidget();  // 括号里要加 this 指针吗?
  // ...
}

~ QMainWnd()
{
  // 如果没加 this 指针,以下语句要添加么?
  if(m_pToolWidget)
  {
    delete m_pToolWidget;
    m_pToolWidget = nullptr;
  }
}

  • 写回答

2条回答 默认 最新

  • 码农阿豪@新空间 新星创作者: 前端开发技术领域 2024-03-25 09:47
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    在构造函数中不需要传入this指针,因为this指针已经指向了QMainWnd类的实例。 在析构函数中需要删除m_pToolWidget指向的QWidget对象,因为它是通过new创建的。 正确的构造函数和析构函数代码应该像这样: QMainWnd(QWidget* pParent) : m_pToolWidget(new QWidget()) { //其他初始化操作 } ~QMainWnd() { if(m_pToolWidget) {
    delete m_pToolWidget;
    m_pToolWidget = nullptr;
    

    } }

    评论

报告相同问题?

问题事件

  • 创建了问题 3月25日