Привет у меня путаница или сказать больше, мне нужно кое-что понять. У меня есть процедура и другая перегруженная процедура такая же.
string conct (string a, string b) {
string str = conct(a, b, "string");
return str;
}
string conct (string a, string b, const char* c) {
// do the processing;
return concatenated_string;
}
Возможно ли, что вместо двух перегруженных функций, если я сделаю c
в перегруженной функции в качестве аргумента по умолчанию. Так что даже если кто-то передает только два аргумента, у меня может быть только одна функция для обработки этого случая.
Но моя главная проблема заключается в третьем аргументе, который в настоящее время const char* c
, Так что, если я сделаю что-то вроде const char* c = "string"
, будет ли правильный способ справиться со случаем устранения перегрузки с помощью одной функции с аргументом по умолчанию.
Я видел пост Вот но это, кажется, сосредоточено на компиляции, а не путанице, которую я имею.
Да, вы можете заменить перегруженные функции одной функцией и аргументом по умолчанию:
string conct (string a, string b, const char* c = "string") {
// do the processing;
return concatenated_string;
}
Значения по умолчанию могут быть использованы в прототипах функций, но если мы хотим установить средний аргумент по умолчанию, тогда нам придется по умолчанию все значения справа от него …
С другой стороны, перегрузка функции может быть сделана для всех возможных комбинаций аргументов, также значение по умолчанию не нужно помещать в стек вызовов функций и, следовательно, меньше работы для компилятора …