V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
jdz
V2EX  ›  C++

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

  •  
  •   jdz · 9 天前 · 903 次点击

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

    4 条回复    2025-02-11 15:48:27 +08:00
    xipuxiaoyehua
        1
    xipuxiaoyehua  
       9 天前
    m 是构造,a 是赋值
    Shatyuka
        2
    Shatyuka  
       9 天前
    构造函数不要 char ,赋值可以。
    试试:
    ```cpp
    std::string n;
    n = 3;
    ```
    yanqiyu
        3
    yanqiyu  
       9 天前
    构造函数没有接一个 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
        4
    Opportunity  
       9 天前
    前一个是拷贝构造,后一个是赋值。

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

    也可以的。https://en.cppreference.com/w/cpp/string/basic_string/operator%3D 看示例 6
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1079 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 18:45 · PVG 02:45 · LAX 10:45 · JFK 13:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.