string类型的加号

fulima007 2011-04-19 08:38:36
string a="abcd"+'a';

最后a输出来怎么啥都不是,string类有没有在重载+号操作符的时候考虑这种情况,

顺便问句,string类自定义的重载函数在哪里看?visual studio在哪里设置头文件的搜索路径?
...全文
194 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
huofen2005 2011-04-19
  • 打赏
  • 举报
回复
string a=string("abcd")+'a';

编译器根据表达式两边的参数类型进行重载决策:类重载加号时候,需要把类对象放在加号左边;
如果加号左边就是常量串,编译器不知道要调用string的加运算的。

string + 'a' ===> string::operator +(string, char*)
"abcd" + 'a' ===> operator +(char*, char*) 貌似没有这么个运算的???
我估计是搞成字符转int相加了吧,然后再把结果赋值给string,即string('a'+'a'),反正是很迂回。

辰岡墨竹 2011-04-19
  • 打赏
  • 举报
回复
"abcd"+'a',一个char[]和一个char相加,根本没有string的事。
pengzhixi 2011-04-19
  • 打赏
  • 举报
回复
string a=string("abcd")+'a';
pathuang68 2011-04-19
  • 打赏
  • 举报
回复
string的+号使用需要小心哦。

详情参考:
http://www.cplusplus.com/reference/string/operator+/

64,639

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧