我用g ++版本4.8.2编译并运行以下C ++代码:
DatePicker
程序将在第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"
或cout
来查找导致运行时错误的行。
答案 0 :(得分:6)
您的程序有未定义的行为,因为push_back
使引用iref
无效。 C ++标准没有为程序的执行指定任何行为。问题&#34;为什么&#34;无法在C ++的上下文中回答。