使用Qt QList存储指针时,指针指向的对象会自动被delete吗?
- 内容介绍
- 文章标签
- 相关推荐
本文共计349个文字,预计阅读时间需要2分钟。
前言:在使用QList的时候,经常会对其进行清空操作,但如果是存储的是指针(即使用new分配的对象),那么QList的clear()操作是否会导致delete触发?
结论:QList在clear()的时候不会自动触发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分钟。
前言:在使用QList的时候,经常会对其进行清空操作,但如果是存储的是指针(即使用new分配的对象),那么QList的clear()操作是否会导致delete触发?
结论:QList在clear()的时候不会自动触发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。

