1) 返回对临时对象的引用是否属于未定义的行为,即使该引用未被使用?例如,这个程序是否保证输出“good”:
int& func()
{
int i = 5;
return i;
}
int main()
{
func();
cout << "good" << endl;
return 0;
}
2) 即使未使用参考,仅仅拥有一个指向不再存在的对象的参考是否属于未定义的行为?例如,这个程序保证输出“good”吗:
int main()
{
int *j = new int();
int &k = *j;
delete j;
cout << "good" << endl;
return 0;
}
3) 把它们组合在一起是未定义行为吗?
int& func()
{
int i = 5;
return i;
}
int main()
{
int& p = func();
cout << "good" << endl;
return 0;
}
i
的引用。 - M.M