gpt4 book ai didi

c++ - 在 C++ 中,如果 "int a = 3; int* p = &a;",那么为什么 "const int* &pp = p"是不允许的,而 "const int* const &pp = p"是允许的?

转载 作者:太空狗 更新时间:2023-10-29 20:20:18 25 4
gpt4 key购买 nike

在 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com