gpt4 book ai didi

C++ const char* 到 std::string &

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:25:30 24 4
gpt4 key购买 nike

我有一个编译代码,它看起来像:

    void test1(const std::string &name)................
test1("myName");

但是,如果我将 const 从声明中删除为:

    void test2(std::string &name)................
test2("myName");

代码无法编译。

为什么 const std::string 可以编译?据我所知,将调用相同的隐式构造函数以将 char * 转换为 std::string

我正在使用 Visual Studio 2013,以防这可能与答案有关。

最佳答案

当隐式转换发生时,您会得到一个临时 std::string(从技术上讲,重要的是它是一个 xvalue)。您不能将临时值绑定(bind)到左值引用 std::string & 但可以绑定(bind)到 const 左值引用 const std::string & 或右值引用 std::string &&.

同样的事情发生在这里:

const int &x = 5;
int &x = 5; // error

关于C++ const char* 到 std::string &,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35306618/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com