我是C++的新手,我对此感到困惑:
vector<int> v = { 1,2 };
const int &r1 = v[0];
//r1 = v[1]; // compiler will show error.
Run Code Online (Sandbox Code Playgroud)
我知道r1无法重新分配引用const .但请看下面的代码:
for (const int &r2 : v) cout << r2;
Run Code Online (Sandbox Code Playgroud)
为什么不会出错?参考const r2分配了两次,对吧?
我是Android的新手,我为初学者读了一本书,表示onSaveInstanceState(Bundle)在系统回收你之前确保被调用Activity.我尝试了一些测试代码并发现它不正确.我发现onSaveInstanceState(Bundle)每次调用后都会onPause()调用它.它与系统回收无关.我不是很确定,所以这就是问题:onSaveInstanceState(Bundle)实际上什么时候被调用?
我正在学习C++.下面的代码让我困惑:
int test_return(int a)
{
for (int i = 40; i < 44; i++)
{
if (i == a)
{
cout << "return here with i: " << i << endl;
return 59;
}
}
}
int main()
{
cout << "in main: " << test_return(61) << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我知道我在函数结束时错过了一个return语句test_return.
但编译器说没有错误,它在执行时有效.
于是,我拿起一些特殊号码,如40,44,59,61,看看哪一个函数test_return会选择回国.
我试过好几次,输出总是如下:
in main: 44
Run Code Online (Sandbox Code Playgroud)
似乎函数在for语句结束之前test_return返回了int i.
我的问题是:
这合法吗?
它是如何工作的?
更新:
我在函数末尾添加了这些代码 …