0
Рассмотрите следующую программу.Почему компилятор вызывает первую перегруженную функцию, а не вторую?
#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");
}
Что следует изменить в программе, чтобы вторая функция вызывалась вместо первой?
Спасибо. Оно работает. Любой другой способ сделать это? – Destructor
@meet Что делать? Опять же, «строка» является константой, вы не можете ее изменить. – deviantfan
@deviantfan: Хорошо, я понял. вы хотите сказать, что модификация строкового литерала - это UB в C++, потому что он хранится в памяти только для чтения. правильно? – Destructor