面试题答案
一键面试- 问题:
- 代码会出现未定义行为。因为
ref
是一个常引用,在定义时必须初始化,而代码中const int& ref;
没有初始化。另外,ref
绑定的num
在花括号结束后就超出作用域被销毁了,此时ref
成为一个悬空引用,后续访问ref
会导致未定义行为。
- 代码会出现未定义行为。因为
- 修改方法:
在这个修改后的代码中,#include <iostream> int main() { int num = 10; const int& ref = num; std::cout << ref << std::endl; return 0; }
ref
在定义时就初始化绑定到num
,并且num
的作用域足够长,在ref
被访问时num
仍然有效。