为什么编译器调用第一个重载函数而不是第二个?
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* 它将转到第一个函数
考虑以下程序。
#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* 它将转到第一个函数