《Accelerated C++》一书的第一章的课后题

- 下面的编译是否有问题?
1:

const std::string hello = “Hello”;
const std::string message = hello + “, world” + “!”;

2:

const std::string exclam = “!”;
const std::string message = “Hello” + “, world” + exclam;

第一段代码是可以编译成功的,但是第二段代码不行。

因为在第二段代码的第二句,赋值号的右边先做”Hello” + “,world” 操作,而对于”Hello”和”,world”都是const char[]类型的,在标准C++中这个类型是不能做 “+”操作的。

而对于第一段代码,hello + “,world”可以进行成功操作,因为hello为std::string类型,对于这种类型,标准库中重载了其与char[]类型之间的”+”操作符,所以是可以的,并且返回值是std::string类型,当然再与右面的exclam操作也没问题了。

对于string类型的“+”操作符,在标准库中重载了string与string的+操作,string与char[]的+操作,以及string与char的+操作,也就是说’x’+hello也是可以的。

所以,为什么两个直接字符串不能相加?

很简单一句话,因为C++标准库中没有实现“+”号对于char[]类型的重载以支持char[] + char[]操作。

为什么标准C++中两个直接字符串常量不能相加相关推荐

  1. ios去掉字符串中的某个字符_iOS 截取字符串中两个指定字符串中间的字符串方法...

    例如,要截取一个字符串中,两个指定字符串中间的字符串,OC截取方法如下: // 要截取 "> 和 之间的汉字内容: @implementation ViewController - ( ...

  2. Java中String类、字符串常量池、字符串常用方法

    String类: String代表字符串类,java中所有双引号中的内容都称为字符串,如:"hello".字符串是不可改变的,因此字符串是可以共享使用的,相当于char字符数组,但 ...

  3. 【错误记录】C 语言中通过指针操作字符串常量出错记录 ( 只有 栈内存 或 堆内存 中的数据才能通过指针修改 | 不要通过指针修改常量区的字符串 )

    文章目录 一.报错记录 二.修改方案 一.报错记录 执行下面的代码 , 报错如下 : 执行的错误代码 : #include <stdio.h> #include <stdlib.h& ...

  4. java double相加_解决java中两个double类型的值相加

    代码: /** * 提供精确的加法运算 * @param v1 被加数 * @param v2 加数 * @return 两个参数的和 */ public static double add(doub ...

  5. java中的字符串常量池_java字符串常量池

    字符串常量池SCP jdk1.6是放在永久代(8中叫方法区或叫元空间)中; jdk1.7+中,字符串常量池放入了堆中,注意运行时常量依然存放在方法区,例如,Integer a = 40:Java在编译 ...

  6. java中一个有意思的字符串intern问题

    本文是在阅读<深入理解java虚拟机>2.4.3节时受到启发而写的,书中对这个知识点讲得也比较清楚了,这里自己再总结一下,加深理解. 文中根据书中的内容加入了自己的一些理解,如有理解不对的 ...

  7. C语言中可以用字符串常量来,C语言字符串详解

    原标题:C语言字符串详解 字符串是一种非常重要的数据类型,但是C语言不存在显式的字符串类型,C语言中的字符串都以字符串常量的形式出现或存储在字符数组中.同时,C 语言提供了一系列库函数来对操作字符串, ...

  8. JVM---StringTable(字符串常量池)

    StringTable(字符串常量池) 字符串常量池 StringTable(字符串常量池) String的基本特性 String 的底层结构 String 的内存分配 String 的基本操作 字符 ...

  9. JVM - 深入剖析字符串常量池

    文章目录 字符串常量池 位置的变更 JVM对字符串常量池的优化 字符串的常见创建方式 (1.7+) 直接赋值字符串 new String() intern 经典面试题 下列代码创建几个对象 案例 案例 ...

最新文章

  1. Android 使用java 代码获取res 里面的value 定义的数组
  2. Caffe源码中layer文件分析
  3. 0基础java应聘_不想搞Java了,6年经验去面试10分钟结束,现在Java面试为这么难...
  4. jquery怎么判断不同的字显示不同的颜色_这个双十一,摄影师的显示器该换了,优派VP2785-2K显示器评测_显示器...
  5. 洛谷 P3244 / loj 2115 [HNOI2015] 落忆枫音 题解【拓扑排序】【组合】【逆元】
  6. TCP/UDP协议简要梳理
  7. html日期判断程序,javascript – HTML5日期验证
  8. java过滤器执行按什么排序_servlet过滤器及监听器
  9. Macbook安装brew
  10. 基于3D人像复原技术的试衣平台
  11. 【小程序源码】强大的万年历微信小程序源码下载
  12. 鸽巢排序(Pigeonhole sort)
  13. Unity5.x从入门到精通资源(电子版+书内项目)
  14. HTML常用的标签:
  15. 互联网应用的特点及其架构演变
  16. centos 64位安装appt命令的apktool工具包
  17. 手撕包菜php,包菜怎么做爽脆不出水,教你简单小技巧,营养健康,家里人都喜欢...
  18. 黑金AX301开发板SPI通信详解
  19. VisionPro——在脚本中调用自己封装的DLL
  20. 【minIO集群 配置负载均衡(二)】

热门文章

  1. Python之numpy库
  2. Jenkins 中如何一次构建多个项目
  3. java-静态-单例-继承
  4. .NET程序员应该理解的几种软件保护方法 辛苦开发的程序需要建立有效的保护机制...
  5. 微软模式与实践团队发布Enterprise Library 4.1及Unity Application Block 1.2
  6. 直角三角形的边角关系_华师大版九年级第四章解直角三角形,知识点讲解加经典例题分析...
  7. 2014届华为校园招聘机试题
  8. Java多线程-线程状态
  9. spring事物回滚遇到的问题
  10. easy-ui表单校验---针对单个字段,多重校验(有参数校验+无参数检验)