小编Kod*_*Kid的帖子

为什么在使用+ =将整数连接到字符串时,g ++不会发出警告/错误

我有这个代码:

#include <iostream>                     
using namespace std; 

int main()                  
{                                                                                    
       string name = "John ";                     
       int age = 32;         
       name += age;    
       cout << name << endl;
       return 0;                                          
}
Run Code Online (Sandbox Code Playgroud)

代码编译成功但在运行时背叛,因为它默默地忽略连接部分并打印:

John
Run Code Online (Sandbox Code Playgroud)

我知道我们需要使用stringstream来完成任务.但为什么上面的代码编译?因为以下代码:

#include <iostream>
using namespace std;                                                                 

int main()                       
{                                                                                    
       string name = "John ";                              
       int age = 55;                                    
       name = name + age;             
       cout << name << endl;      
       return 0;
} 
Run Code Online (Sandbox Code Playgroud)

适当抛出和错误:

错误:'name + age'中的'operator +'不匹配

我从Java中知道,与前一个构造a += b不同,a = a + b将结果类型化为a的类型. …

c++ java g++ type-conversion implicit-conversion

4
推荐指数
1
解决办法
173
查看次数

标签 统计

c++ ×1

g++ ×1

implicit-conversion ×1

java ×1

type-conversion ×1