cpp 一个隐式转换奇怪的现象

206 天前
 jdz

std::map<std::string, std::string> a; std::string m = 2; //编译失败 a["hello"] = 1; //编译成功 为什么呢

2271 次点击
所在节点    C++
4 条回复
xipuxiaoyehua
206 天前
m 是构造,a 是赋值
Shatyuka
206 天前
构造函数不要 char ,赋值可以。
试试:
```cpp
std::string n;
n = 3;
```
yanqiyu
206 天前
构造函数没有接一个 char 的构造[1],但是有接一个 char 的 assign[2]
[1]: https://en.cppreference.com/w/cpp/string/basic_string/basic_string
[2]: https://en.cppreference.com/w/cpp/string/basic_string/operator%3D
Opportunity
206 天前
前一个是拷贝构造,后一个是赋值。

```
std::string m;
m = 2;
```

也可以的。https://en.cppreference.com/w/cpp/string/basic_string/operator%3D 看示例 6

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1110662

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX