在C中,如果“int a = 3; int * p =&a;“,那么为什么不允许使用”
发布时间:2020-12-16 09:21:42 所属栏目:百科 来源:网络整理
导读:在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
在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的生命周期. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |