zoukankan      html  css  js  c++  java
  • 为什么标准C++中两个直接字符串常量不能相加

    《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[]操作。

  • 相关阅读:
    springnodejs
    js CacheQueue
    权重练习
    架构师速成8.3-可用性之分库分表
    架构师速成8.3-可用性之分布式
    架构师速成8.3-可用性
    架构师速成8.3-架构师必须要了解的规则(转)
    架构师速成6.15-开发框架-单点登录
    架构师速成6.14-开发框架-异常处理
    架构师速成6.13-开发框架-前后结合
  • 原文地址:https://www.cnblogs.com/AlexKing007/p/12338061.html
Copyright © 2011-2022 走看看