你好我有困惑或者说我需要了解更多。我有一个程序和另一个重载程序相同。
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"
的内容,那么处理使用默认参数的一个函数去除重载的情况是否正确?
我看到帖子here,但这似乎集中在编译而不是我的困惑。
答案 0 :(得分:3)
是的,您可以使用一个函数和一个默认参数替换重载函数:
string conct (string a, string b, const char* c = "string") {
// do the processing;
return concatenated_string;
}
答案 1 :(得分:0)
默认值可以在函数原型中使用,但如果我们想要默认中间参数,那么我们必须将所有值默认为右... 另一方面,可以为所有可能的参数组合重载函数,也不需要将默认值放在函数调用堆栈上,从而减少编译器的工作量......