问一个关于const、指针和引用混合的问题(如果有人愿意详细讨论,我会加分)
这个问题来源于潘爱民和张丽合译的《C++ Primer 3e》
在第3.6节P88页中有这样一段话
"
const int ival=1024;
//仍然错误
const int *&pi_ref=&ival;
如果我们从左向右读这个定义,会发现pi_ref是一个指向定义为const的int型对象的指针。我们的引用不是指向一个常量,而是指向一个非常量指针,指针指向一个const对象。正确的定义如下:
const int ival=1024;
//OK:这是可以被编译器接受的
const int *const &pi_ref=&ival;
"
在const int *const &pi_ref=&ival这个语句中,pi_ref明显是一个const引用,而const引用应该是指向内存中的一个临时变量。按照C++ Primer中的解释这个临时变量应该是一个非常量指针?而非常量指针又如何指向一个const对象呢?难道其中有强制类型转换?
在第3.6节P88页中有这样一段话
"
const int ival=1024;
//仍然错误
const int *&pi_ref=&ival;
如果我们从左向右读这个定义,会发现pi_ref是一个指向定义为const的int型对象的指针。我们的引用不是指向一个常量,而是指向一个非常量指针,指针指向一个const对象。正确的定义如下:
const int ival=1024;
//OK:这是可以被编译器接受的
const int *const &pi_ref=&ival;
"
在const int *const &pi_ref=&ival这个语句中,pi_ref明显是一个const引用,而const引用应该是指向内存中的一个临时变量。按照C++ Primer中的解释这个临时变量应该是一个非常量指针?而非常量指针又如何指向一个const对象呢?难道其中有强制类型转换?
...全文
相关推荐
c++ const引用与非const引用介绍
在C++编程中,引用(reference)是一种非常重要的特性,它类似于指针,但又具有自己的独特性。引用一旦被初始化后,就不能再改变引用的对象。这里我们将详细讨论const引用和非const引用的区别
c++中引用和指针的区别和联系
而指针需要通过解引用操作符(*)来访问其所指向的值。这使得引用的使用更加简洁,避免了忘记解引用可能引发的错误。
C++中const与指针、引用的分析
是常量,不能绑定到非const引用```4、const和指针、引用的组合在函数参数中的应用在函数参数中,const可以用于保护函数内部不修改传入的参数,提高代码的安全性和可读性。
详细分析c++ const 指针与指向const的指针
在本文中,我们将详细分析 C++ const 指针和指向const的指针,帮助读者更好地理解和学习这两个概念。
C++指针与引用的区别
引用没有 const,指针有 const,const 的指针不可变;const 是一个关键字,用于限定变量的值不可改变。5.


