如果我有代码:
struct Test
{
int x = 10;
};
int main()
{
std::list<Test> linkedList;
std::cout << linkedList.front().x << std::endl;
}
---
out -> 0
Run Code Online (Sandbox Code Playgroud)
为什么我的 test.x 值是 0?如果我将列表更改为 int 类型,它返回 0。如果我给它一个 char 类型,我什么也得不到(或“”)。
我很好奇它是如何(以及为什么)发生在引擎盖下的。它如何处理返回任何类型的值而不退出程序或需要尝试/捕获?
linkedList是空的list。调用front()它会导致UB,意味着一切皆有可能。
返回对容器中第一个元素的引用。
在空容器上调用 front 是未定义的。