以下是此功能的文档,
T & QList::first ()
返回对列表中第一项的引用。列表一定不能 是空的。如果列表可以为空,请在调用之前调用
isEmpty()
功能
我想弄清楚如果列表为空,QList::first()
会返回什么?
答案 0 :(得分:4)
快速扫描来源(参考:qtproject/qt
)表明该呼叫受QT_ASSERT(!isEmpty())
保护(对于两个覆盖,const
和非)。
如果没有通过源代码进行挖掘,我猜测QT_ASSERT
将调用terminate
或类似内置调试版,并且可能会在发布时编译出来。否则,对QList::first
的调用最终会取消引用代理类型QListData::Data
中的指针,这在您的情况下将是未定义的行为。
总结:不要这样做
答案 1 :(得分:0)
只需查看相应的qlist.h
标题即可。 QList::first()
的实现就像
inline T& first() { Q_ASSERT(!isEmpty()); return *begin(); }
在空列表中,断言将abort()
您的程序。
答案 2 :(得分:0)
如果列表为空,
QList::first()
会返回什么
它永远不会回来。严重。
OTOH,我对你这样的问题感到很困惑。如果你不能尝试,也许你应该设置自己的环境,以便在深入研究之前轻松完成这些实验。