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

时间:2015-05-17 08:05:02

标签: c++ overloading

考虑以下计划。

#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");
}

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

1 个答案:

答案 0 :(得分:1)

当你传入“string”

时,你传入一个const char *

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

“string”是一个const char *,它将转到第一个函数