为什么编译器调用第一个重载函数而不是第二个?

Why compiler is calling first overloaded function not second one?

考虑以下程序。

#include <iostream>
void fun(const char a[]) {
    std::cout<<"function 1\n"; 
    std::cout<<a<<'\n';
}
void fun(char *a) {
    std::cout<<"function 2\n"; 
    std::cout<<a<<'\n';
}
int main() { 
    fun("string");
}

我应该在程序中更改什么才能调用第二个函数而不是第一个函数?

当你传入 "string"

时,你传递的是一个 const char *

您可以做的是声明一个 char * 并将其设置为某个内容,然后将其传入,它将转到第二个函数。

"string" 是一个 const char* 它将转到第一个函数