为什么 C++ 允许将整数赋给字符串?

2023-11-28

我今天在程序中遇到了一个有趣的情况,我无意中将一个无符号整数分配给了 std::string。 VisualStudio C++ 编译器没有给出任何警告或错误,但我在运行项目时碰巧注意到了这个错误,它给了我的字符串垃圾字符。

代码如下:

std::string my_string("");
unsigned int my_number = 1234;
my_string = my_number;

以下代码也可以正常编译:

std::string my_string("");
unsigned int my_number = 1234;
my_string.operator=(my_number);

以下结果将导致错误:

unsigned int my_number = 1234;
std::string my_string(my_number);

到底是怎么回事?为什么编译器会停止最后一个代码块的构建,但让前 2 个代码块构建?


因为字符串可以从char, and int可以隐式转换为char.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 C++ 允许将整数赋给字符串? 的相关文章

随机推荐