您的位置:首页 > 其它

关于常量指针的引用

2016-07-28 11:18 274 查看
int main()
{
int n[3] = { 3,4,5 };
const int * const p = n;
//既然有指向指针的引用,就不难想到指向常量指针的引用。
//于是就有如下尝试
//const int * (&r) = p;
//结果报错如下
//将 "const int *&" 类型的引用绑定到 "const int *const" 类型的初始值设定项时,限定符被丢弃
//也就是说由于顶层const被抛弃 赋予r的为 const int *类型的指针 由于引用可以改变指向对象的值,所以声明报错
//这时候就想到了const_cast类型转换了 我们加上后代码如下
const int * (&r) = const_cast<const int *>(p);
std::cout << *r<<"  ";
r += 1;
std::cout << *r<<"  " ;
//输出代码如下:3 4
//也就是说使用指向 const * const 类型的指针 的引用的时候会丢失掉指针的const 这使得我们可以改变指针引用的值(指针指向的地址)。
//这就使得源指针p的值发生了改变!!! 这很不安全!!! 所以不要使用引用来返回接口对象!!!
std::cout << *p << "  ";
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: