c++ - 如果列表为空,QList::first() 会返回什么?

标签 c++ qt stl qlist

这里是这个函数的文档,

T & QList::first ()

Returns a reference to the first item in the list. The list must not be empty. If the list can be empty, call isEmpty() before calling this function.

我想知道如果列表为空,QList::first() 会返回什么?

最佳答案

源代码的快速扫描(引用:qtproject/qt)显示调用受 QT_ASSERT(!isEmpty()) 保护(对于两个覆盖,const和非)。

如果不深入研究源代码,我猜测 QT_ASSERT 将调用 terminate 或类似的方法(如果在调试中构建),并且可能会在发布时编译出来。否则,对 QList::first 的调用最终会取消引用代理类型 QListData::Data 中的指针,这在您的情况下是未定义的行为。

总结:不要这样做

关于c++ - 如果列表为空,QList::first() 会返回什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33239905/

相关文章:

c++ - std::map 与 std::unordered_map 迭代值类型的差异

c++ - C++ 中结构的构造函数导致非零退出代码

c++ - 宏中的管道表示什么?

c++ - 嵌套类作为C++中父类的模板参数

c++ - QT/exiv2 应用程序在某些 Windows 机器上崩溃

Qt 安装程序框架 :How to specify the desktop shortcut icon?

c++ - 在具有不同版本的 visual studio 的静态库中内部使用 STL

c++ - 自定义 vector STL 容器中的 clear() 问题

c++ - 添加一个方法后类的奇怪行为

qt - qt sdk的替代下载位置