首页 新闻 会员 周边

accelerated C++ 中一个问题

0
[已解决问题] 解决于 2013-04-15 14:03

{

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

}

{

const std::string exclam = "!"; const std::string message = "hello" + ", world"+ exclam ;

}

两段代码中为什么第一段代码是正确的,第二段是错误的?不是很能理解第二段错误的原因。报错“error C2110: '+' : cannot add two pointers”。

墨沫心的主页 墨沫心 | 菜鸟二级 | 园豆:202
提问于:2013-04-03 13:26
< >
分享
最佳答案
0

const std::string message = "hello" + ", world"+ exclam ;

  1. 这个问题在C++ Primer中有介绍,string的+操作符,至少要求其中一个操作数是string类型,两个字符串常量的想加操作是错误的,。  
  2. +操作符是从左往右结合的,从顺序可以看出结果来。 hello + ", world"+ "!", 等价于 ( hello + ", world") + "!",前者相加后结果是string,所以正确,。
奖励园豆:5
远东悟语 | 菜鸟二级 |园豆:215 | 2013-04-08 09:58

哦哦,明白了,我是在看accelerate C++的时候看到的这个问题,其实其中也有像你类似的解释,当时没大理解,被你解释一下总算理解了。谢谢哦^_^

墨沫心 | 园豆:202 (菜鸟二级) | 2013-04-15 14:03
其他回答(1)
0

const 修饰 就好比是只读的意思。所以你下面一句赋值是行不通的

茂茂 | 园豆:2892 (老鸟四级) | 2013-04-03 13:59
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册