当前位置 : 主页 > 编程语言 > c++ >

在C中,如果“int a = 3; int * p =&a;“,那么为什么不允许使用”const int *&pp = p“,但允

来源:互联网 收集:自由互联 发布时间:2021-06-23
在C中,如果: int a = 3; int* p = a; 那为什么呢 const int* pp = p; 不允许,但是 const int* const pp = p; 被允许? 给定const int * pp = p;,p必须首先隐式转换为const int *.但是转换后的const int *是一个临时的
在C中,如果:

int a = 3; 
int* p = &a;

那为什么呢

const int* &pp = p;

不允许,但是

const int* const &pp = p;

被允许?

给定const int *& pp = p;,p必须首先隐式转换为const int *.但是转换后的const int *是一个临时的,它不能绑定到非const的lvalue-reference(比如const int *&).

临时可以绑定到对const的lvalue-reference(比如const int * const&)(和rvalue-reference),所以const int * const& pp = p;工作良好.临时的生命周期延长到参考pp的生命周期.

网友评论