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

Why compiler is calling first overloaded function not second one?

本文关键字:第二个 函数 重载 编译器 调用 第一个 为什么      更新时间:2023-10-16

考虑以下程序。

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

我应该在程序中做什么更改,以便调用第二个函数而不是第一个函数?

当你传入"string"时你就传入了一个const char *

你可以做的是声明一个char *并设置它的值,然后传递给第二个函数,它会转到第二个函数。

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