una*_*der 3 c++ const reference c++11
在C++中,如果:
int a = 3;
int* p = &a;
Run Code Online (Sandbox Code Playgroud)
那为什么呢
const int* &pp = p;
Run Code Online (Sandbox Code Playgroud)
不允许,但是
const int* const &pp = p;
Run Code Online (Sandbox Code Playgroud)
被允许?
给定const int* &pp = p;,p必须const int*首先隐式转换.但是转换后const int*是临时的,不能绑定到非值的左值(如const int* &).
临时可以绑定到lvalue-reference到const(like const int* const &)(和rvalue-reference),所以const int* const &pp = p;工作正常.临时的生命周期延长到参考的生命周期pp.