读书人

关于const 引用和const变量的有关问题

发布时间: 2012-10-24 14:15:58 作者: rapoo

关于const 引用和const变量的问题
#include <iostream>
using namespace std;

int main(void)
{
int i = 1;
const int &refi = i;
i = 3;
cout<<i<<endl<<refi<<endl;
system("pause");
return 0;
}
这种情况可以编译运行,refi的值为3,通过i的修改可以间接改变refi的值?
但是
#include <iostream>
using namespace std;

int main(void)
{
int i = 1;
const int &refi = i;
refi = 3;
cout<<i<<endl<<refi<<endl;
system("pause");
return 0;
}
就会报错
error C3892: “refi”: 不能给常量复制

[解决办法]
既然是const 引用,那么就不能通过这个引用来改变i的值,所以refi = 3;是非法的
[解决办法]
这是常引用问题,具体的楼主可以自己查找一下相关资料

C/C++ code
int i = 1;const int &refi = i;i = 3; // rightrefi = 3; // wrong
[解决办法]
const int &refi = i;
不能通过refi去修改refi所引用对象的值
[解决办法]
int i = 1; //i不是const的,可修改
const int &refi = i; //refi引用被cosnt限定,无法修改被引用对象
[解决办法]
看const限定的是谁~~
[解决办法]
首先,引用只是一个别名。其次,const是修饰ref,而不是修饰i的,所以const只对ref起作用,而对i没有效果。
[解决办法]
探讨

const int &refi = i;
不能通过refi去修改refi所引用对象的值

[解决办法]
探讨
首先,引用只是一个别名。其次,const是修饰ref,而不是修饰i的,所以const只对ref起作用,而对i没有效果。

读书人网 >C++

热点推荐