我很困惑为什么下面的代码没有产生任何错误,因为传递给 display 的参数是相同的类型,即char
。真的const
有区别吗?
#include<iostream>
using namespace std;
void display(char *p)
{
cout<<p;
}
void display(const char *p)
{
cout<<p;
}
int main()
{
display("Hello");
display("World");
}
编辑 根据答案,永远不会调用第一个显示,这是正确的,输出也是如此。
但假设我这样做:
int main()
{
char *p="Hello";
display(p);//now first display is called.
display("World");
}
编译器给出了一个warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
但随后它调用了第一个显示。这是否意味着该字符串现在不再被视为常量?