首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2012-10-24 
关于const 引用和const变量的问题#include iostreamusing namespace stdint main(void){ int i 1con

关于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 &amp;refi = i;
不能通过refi去修改refi所引用对象的值

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

热点排行