我已经用g++版本4.8.2编译并运行以下C++代码:

vector<int> ivec{0,1,2};
int& iref = ivec[1];
for (int i=3;i<100;++i)
   ivec.push_back(i);
iref = 10;
cerr<<"After Error"<<'\n';
return 0;

程序将按预期在iref = 10;行崩溃,因为该引用无效。但是字符串"After Error"被打印出来。为什么?

这个问题的答案对我很重要,因为在大多数情况下,我都是使用coutcerr查找导致运行时错误的行。

最佳答案

您的程序具有未定义的行为,因为push_back使引用iref无效。 C++标准未指定程序执行的任何行为。在C++上下文中无法回答问题“为什么”。

关于c++ - 发生错误后执行的代码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30921009/

10-11 22:51