我认为以下代码应该会产生错误:
#include <iostream>
#include <string>
static void pr(const std::string &aStr)
{
std::cout << aStr << "\n";
}
int main(void)
{
const char *a = "Hellu";
pr(a);
return 0;
}
但 gcc 4.1.2 编译成功。
是不是 std::string 的构造函数挡住了路,创建了一个 std::string 的实例?
我认为不应该,因为引用只是变量的别名(在这种情况下,引用所指的 std::string 类型的变量不存在)。
有没有人解释为什么代码编译成功?
提前致谢。