万能的社区请赐我一个昵称吧 2024-08-23 18:54 采纳率: 42.9%
浏览 3

C++中的引用以及右值引用问题

在C++中,const int & a=5; int && a=5;这种语句是被允许的。
为什么对于字符串常量仅仅只能允许右值引用?
比如
const char* &&p="qiqi is a cat.";
而不能允许以下语句:
const char* &p="qiqi is a cat.";

  • 写回答

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 是一个指向常量字符的右值引用,它绑定到了一个临时的字符串字面量上。需要注意的是,这里的右值引用并没有改变字符串字面量本身的性质,它仍然是一个只读的对象。

    评论

报告相同问题?

问题事件

  • 创建了问题 8月23日

悬赏问题

  • ¥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时报错了如何解决?