这是这个函数的文档,
T & QList::first ()返回对列表中第一项的引用。列表不能是空的。如果列表可以为空,则在调用此函数之前调用
isEmpty()。
我正在试图弄清楚,如果列表是空的,QList::first()会返回什么?
发布于 2015-10-20 15:31:53
对源(引用:qtproject/qt )的快速扫描显示,调用受QT_ASSERT(!isEmpty())保护(包括重写、const和non)。
如果没有在源代码中进行挖掘,我猜QT_ASSERT将调用terminate或类似的,如果是在调试中内置的,并且可能在发行版中编译出来。否则,对QList::first的调用最终会取消代理类型QListData::Data中的指针,这在您的情况下是未定义的行为。
概括地说:不要这样做
发布于 2015-10-20 15:27:21
只需查看相应的qlist.h头即可。QList::first()的实现非常简单
inline T& first() { Q_ASSERT(!isEmpty()); return *begin(); }在空列表上,断言将abort()您的程序。
发布于 2015-10-21 15:32:31
如果列表为空,
QList::first()将返回什么?
它再也不会回来了。我是认真的。
哦,像你这样的问题,我真的很困惑。如果您不能尝试它,也许您应该设置您的环境,使这样的实验容易,然后再深入研究。
https://stackoverflow.com/questions/33239905
复制相似问题