为什么编译器调用第一个重载函数而不是第二个?
问题描述:
考虑以下程序。为什么编译器调用第一个重载函数而不是第二个?
#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");
}
我该怎么改变程序中的第二个函数而不是第一个被调用?
答
那么你传递一个const char *当您在“字符串”通过
你可以做的是宣布一个char *并将其设置为东西,然后通过它,它会进入到第二功能。
“字符串”是一个常量字符*,它将转到第一个函数
谢谢。有用。任何其他方式来做到这一点? – Destructor
@meet要做什么?再一次,“string”是const,你不能改变它。 – deviantfan
@deviantfan:好的,我明白了。你的意思是说修改字符串文字是C++中的UB,因为它存储在只读存储器中。对? – Destructor