我有几个问题,我认为对于具有 C++ 经验的人来说很容易回答,我会为 TL;DR 加粗问题
给定以下代码:
void stringTest(const std::string &s)
{
std::cout << s << std::endl;
}
int main()
{
stringTest("HelloWorld");
}
希望有人可以在这里指出我思考过程中的错误:
为什么 stringTest 中的参数在传递 C-Style 字符串时必须标记为 const?是否存在使用其 cstyle 字符串构造函数进行的到 std::string 的隐式转换,因此“s”不再是对文字的引用(并且不需要是 const)。
此外,cstyle 字符串构造函数会是什么样子,编译器如何知道在看到时调用它:
stringTest("HelloWorld");
它是否只是将字符串文字识别为 char* 之类的东西?
我在研究复制构造函数时偶然发现了这些问题。我自己澄清的另一个快速问题......
在类似的情况下:
std::string s = "HelloWorld";
cstyle字符串构造函数是用来实例化一个临时std::string,然后使用字符串复制构造函数将临时字符串复制到“s”中吗?:
std::string(const std::string&);