在 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*
是临时的,不能绑定(bind)到非 const 的左值引用(如 const int* &
)。
Temporary 可以绑定(bind)到对 const 的左值引用(如 const int* const &
)(和右值引用),所以 const int* const &pp = p;
工作正常。并且临时对象的生命周期延长到引用 pp
的生命周期。
关于c++ - 在 C++ 中,如果 "int a = 3; int* p = &a;",那么为什么 "const int* &pp = p"是不允许的,而 "const int* const &pp = p"是允许的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52250569/