一个不错的理论question...Why常量引用和常量指针的行为方式不一样,这样我就可以改变它们所指向的对象了吗?它们看起来真的像是另一个普通的变量声明。我为什么要用它们呢?这是我运行的一个简短示例,它编译并运行时没有任何错误:
int main (){
int i=0;
int y=1;
int&const icr=i;
icr=y; // Can change the object it is pointing to so it's not like a const pointer...
icr=99; // Can assign another value but the value is not assigned to y...
int x=9;
icr=x;
cout<<"icr: "<<icr<<", y:"<<y<<endl;
}发布于 2011-09-15 22:17:28
最清晰的答案。
不,这是胡说八道
要了解上述声明的含义,请从右向左阅读:“x是对X的常量引用”。但这是多余的-引用总是常量,从这个意义上说,您永远不能重新放置引用以使其引用不同的对象。绝不可能。使用或不使用常量。
换句话说,“X& const x”在功能上等同于“X&x”。既然你在&后面加上const什么也得不到,你就不应该添加它:它会让人们感到困惑- const会让一些人认为X是const,就好像你说的是“const X& x”。
发布于 2011-09-15 01:58:37
语句icr=y;没有使引用引用y;它将y的值赋给icr引用的变量i。
引用本质上是const的,也就是说,你不能改变它们引用的内容。“const引用”实际上是“对const的引用”,也就是说你不能改变它们引用的对象的值。它们被声明为const int&或int const&,而不是int& const。
发布于 2011-09-15 01:59:13
什么是常量引用(不是常量引用)
常量引用实际上是对常量的引用。
常量引用/对常量的引用由以下符号表示:
int const &i = j; //or Alternatively
const int &i = j;
i = 1; //Compilation Error这基本上意味着,您不能修改引用所引用的object类型的值。
为例:
试图通过常量引用修改变量j的值(赋值1),i将导致错误:
只读引用‘i’的
赋值
icr=y; // Can change the object it is pointing to so it's not like a const pointer...
icr=99;不改变引用,它将赋值给引用引用的类型的值。引用不能引用除它们在初始化时绑定到的变量之外的任何其他变量。
第一条语句将的值y赋给i
第二条语句将的值99赋值给i
https://stackoverflow.com/questions/7420780
复制相似问题