在C++中,const int & a=5; int && a=5;这种语句是被允许的。
为什么对于字符串常量仅仅只能允许右值引用?
比如
const char* &&p="qiqi is a cat.";
而不能允许以下语句:
const char* &p="qiqi is a cat.";
C++中的引用以及右值引用问题
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- 吃不了席 2024-08-23 18:55关注
以下回复参考:皆我百晓生、券券喵儿等免费微信小程序作答:
在C++中,字符串字面量(如 "qiqi is a cat.")是一个常量表达式,它的值在编译时就已经确定。因此,我们不能将一个非常量的引用绑定到一个临时的、只读的对象上。这就是为什么你不能使用
const char* &p="qiqi is a cat."
这样的语句的原因。然而,我们可以使用右值引用来绑定到临时对象上,因为右值引用允许我们捕获一个将要被销毁的对象的引用。在这种情况下,我们可以这样做:
const char* &&p = "qiqi is a cat.";
这里,
p
是一个指向常量字符的右值引用,它绑定到了一个临时的字符串字面量上。需要注意的是,这里的右值引用并没有改变字符串字面量本身的性质,它仍然是一个只读的对象。解决 无用评论 打赏 举报
悬赏问题
- ¥66 关于川崎机器人调速问题
- ¥15 winFrom界面无法打开
- ¥15 crossover21 ARM64版本安装软件问题
- ¥15 mymetaobjecthandler没有进入
- ¥15 mmo能不能做客户端怪物
- ¥15 osm下载到arcgis出错
- ¥15 Dell g15 每次打开eiq portal后3分钟内自动退出
- ¥200 使用python编写程序,采用socket方式获取网页实时刷新的数据,能定时print()出来就行。
- ¥15 matlab如何根据图片中的公式绘制e和v的曲线图
- ¥15 我想用Python(Django)+Vue搭建一个用户登录界面,但是在运行npm run serve时报错了如何解决?