c++ - 为什么 const char* const & = "hello" 可以编译?
问题描述
我正在阅读书中的代码片段并找到以下内容:
const char* const & a = "hello"; //can compile
const char*& a = "hello"; //cannot
我所知道的是,在初始化引用时,不会发生数组到指针的转换。
const char* const &
,对 a 的引用const pointer
,指针指向const char
。
const char*&
,对 a 的引用pointer
,指针指向
const char
。
那么,为什么要添加一个 extra const
,表明指针是 a const
,允许它编译呢?
解决方案
它基本上遵循这个公式
T const & a = something_convertible_to_T;
T 在哪里const char*
。在第一种情况下,可以实现一个临时指针,分配文字的地址,然后将其自身绑定到引用。在第二种情况下,由于左值引用不是 const,它不会发生。更多相同的另一个例子
const char* && a = "hello"; // rvalue ref makes a no into a yes.
现在临时指针绑定到一个右值引用。
推荐阅读
- php - FCM 目标条件语法
- java - 从连接表 JPA 中删除列
- c# - 无法取消具有异步等待的 wix 安装自定义操作
- python - 如何使用 OpenCV 将梯度/幅度应用于图像?
- java - 如何从 Flux onComplete 发射
- node.js - 致命错误:接近堆限制的无效标记压缩分配失败 - Javascript 堆内存不足。Expo.io,npm 问题
- php - 更改制造商管理控制器中的状态 - prestashop 1.6
- c - 如何从函数返回 printf char 指针?
- java - 有没有办法根据输入文本中的位置检索 JSON 路径
- python - 如何根据 groupby 计算 12 个月的滚动总和?