使用Qt QList存储指针时,指针指向的对象会自动被delete吗?

更新于
2026-07-31 10:24:22
14阅读来源:SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计349个文字,预计阅读时间需要2分钟。

使用Qt QList存储指针时,指针指向的对象会自动被delete吗?

前言:在使用QList的时候,经常会对其进行清空操作,但如果是存储的是指针(即使用new分配的对象),那么QList的clear()操作是否会导致delete触发?

结论:QList在clear()的时候不会自动触发delete。

使用Qt QList存储指针时,指针指向的对象会自动被delete吗?


前言:

在使用QList的时候,往往会对其进行清空操作,但是如果QList中存放的是指针( 指向使用new分配的对象 ),那么QList的clear()动作是否会触发delete?

正文:

结论:QList在clear的时候不会delete其中的指针成员。

QList清空元素的方法为clear(),其源码为:

template <typename T>
Q_OUTOFLINE_TEMPLATE void QList<T>::clear()
{
*this = QList<T>();
}

可见,其只是将当前列表内的数据替换为一个空的QList,因此不会调用delete。

那么在清空QList的时候,特别是QList里的内容是一系列指针时,需要先挨个析构QList中的所有内容,再清空QList。

阅读全文

本文共计349个文字,预计阅读时间需要2分钟。

使用Qt QList存储指针时,指针指向的对象会自动被delete吗?

前言:在使用QList的时候,经常会对其进行清空操作,但如果是存储的是指针(即使用new分配的对象),那么QList的clear()操作是否会导致delete触发?

结论:QList在clear()的时候不会自动触发delete。

使用Qt QList存储指针时,指针指向的对象会自动被delete吗?


前言:

在使用QList的时候,往往会对其进行清空操作,但是如果QList中存放的是指针( 指向使用new分配的对象 ),那么QList的clear()动作是否会触发delete?

正文:

结论:QList在clear的时候不会delete其中的指针成员。

QList清空元素的方法为clear(),其源码为:

template <typename T>
Q_OUTOFLINE_TEMPLATE void QList<T>::clear()
{
*this = QList<T>();
}

可见,其只是将当前列表内的数据替换为一个空的QList,因此不会调用delete。

那么在清空QList的时候,特别是QList里的内容是一系列指针时,需要先挨个析构QList中的所有内容,再清空QList。

阅读全文