gpt4 book ai didi

c++ - 为什么我可以使用 const char* 作为 std::map 中的键

转载 作者:可可西里 更新时间:2023-11-01 18:04:57 30 4
gpt4 key购买 nike

我已经定义了一个数据结构

std::map<std::string, int> a;

我发现我可以像这样传递 const char* 作为键:

a["abc"] = 1;

哪个函数提供了从 const char* 到 std::string 的自动类型转换?

最佳答案

std::string 有一个 constructor that allows the implicit conversion from const char* .

basic_string( const CharT* s,
const Allocator& alloc = Allocator() );

表示隐式转换,例如

std::string s = "Hello";

是允许的。

这相当于做类似的事情

struct Foo
{
Foo() {}
Foo(int) {} // implicit converting constructor.
};

Foo f1 = 42;
Foo f2;
f2 = 33 + 9;

如果你想禁止隐式转换构造,你可以将构造函数标记为explicit:

struct Foo 
{
explicit Foo(int) {}
};

Foo f = 33+9; // error
Foo f(33+9); // OK
f = Foo(33+9); // OK

关于c++ - 为什么我可以使用 const char* 作为 std::map<std::string, int> 中的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13725873/

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