小编Xun*_*ong的帖子

为什么可以在for-statement中重新分配引用const?

我是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分配了两次,对吧?

c++

30
推荐指数
3
解决办法
1116
查看次数

是onSaveInstanceState(Bundle)的方法是在onPause()之后调用的吗?

我是Android的新手,我为初学者读了一本书,表示onSaveInstanceState(Bundle)在系统回收你之前确保被调用Activity.我尝试了一些测试代码并发现它不正确.我发现onSaveInstanceState(Bundle)每次调用后都会onPause()调用它.它与系统回收无关.我不是很确定,所以这就是问题:onSaveInstanceState(Bundle)实际上什么时候被调用?

java android android-activity android-memory

6
推荐指数
1
解决办法
544
查看次数

当函数在结尾处缺少return语句时,为什么它可以工作?

我正在学习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.

我的问题是:

这合法吗?

它是如何工作的?

更新:

我在函数末尾添加了这些代码 …

c++ return function

2
推荐指数
1
解决办法
568
查看次数