gpt4 book ai didi

c++ - 为什么我可以将 "C string"传递给需要 std::string 的函数并且它有效?

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

我有一个方法:

void Foo::Bar(const std::string &str)
{
printf("%d", str.length());
}

当我这样做时它会无缝地工作

foo.Bar("hello");

我认为 "hello" 是一个 const char *,而不是一个 std::string

最佳答案

有两种方式可以隐式转换用户定义的类型:

  1. 使用转换构造函数(例如“std::string::string(const char* c_string)”)。
  2. 使用转换运算符(例如“OldType::operator NewType() const”)。

任何采用单个参数且不使用关键字“explicit”的构造函数都定义了隐式转换(从参数的类型到正在构造的对象的类型)。标准字符串类有意不使用“explicit”,以提供这种转换的便利。

关于c++ - 为什么我可以将 "C string"传递给需要 std::string 的函数并且它有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6919698/

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