C++ 使用默认参数重载
C++ Overloading with default parameters
我有一个小问题,如何初始化函数中的默认参数?
#include <iostream>
#include <cmath>
using namespace std;
float area(float a, float b, float c);
float area(float a, float b=a, float c =a);
int main() {
cout << area(10) << endl;
return 0;
}
float area(float a, float b, float c){
return a*b*c
}
我遇到了错误,我该如何正确执行?
如果您希望 b
和 c
的默认值是 a
的值,那么您应该使用重载:
float area(float a, float b, float c){
return a*b*c
}
float area(float a) {
return area(a, a, a);
}
C++ 不允许使用参数作为默认参数。所以这个
float area(float a, float b=a, float c =a);
^^ ^^
是一个错误。
您将不得不使用重载而不是默认参数:
#include <iostream>
#include <cmath>
using namespace std;
float area(float a, float b, float c);
float area(float a);
int main() {
cout << area(10) << endl;
return 0;
}
float area(float a, float b, float c){
return a*b*c;
}
float area(float a){
return area(a,a,a);
}
在 C++ 中
您应该只为一个方法(包括可选参数)创建原型并实现代码,默认值是省略可选参数必须是常量,而不是未知值。 ..
float area(float a, float b=0, float c=0);
int main() {
cout << area(10) << endl;
return 0;
}
float area(float a, float b=-1, float c =-1);){
if(b==-1 ||c==-1)
{
return a*a*a;
}else
{
return a*b*c;
}
}
我有一个小问题,如何初始化函数中的默认参数?
#include <iostream>
#include <cmath>
using namespace std;
float area(float a, float b, float c);
float area(float a, float b=a, float c =a);
int main() {
cout << area(10) << endl;
return 0;
}
float area(float a, float b, float c){
return a*b*c
}
我遇到了错误,我该如何正确执行?
如果您希望 b
和 c
的默认值是 a
的值,那么您应该使用重载:
float area(float a, float b, float c){
return a*b*c
}
float area(float a) {
return area(a, a, a);
}
C++ 不允许使用参数作为默认参数。所以这个
float area(float a, float b=a, float c =a);
^^ ^^
是一个错误。
您将不得不使用重载而不是默认参数:
#include <iostream>
#include <cmath>
using namespace std;
float area(float a, float b, float c);
float area(float a);
int main() {
cout << area(10) << endl;
return 0;
}
float area(float a, float b, float c){
return a*b*c;
}
float area(float a){
return area(a,a,a);
}
在 C++ 中
您应该只为一个方法(包括可选参数)创建原型并实现代码,默认值是省略可选参数必须是常量,而不是未知值。 ..
float area(float a, float b=0, float c=0);
int main() {
cout << area(10) << endl;
return 0;
}
float area(float a, float b=-1, float c =-1);){
if(b==-1 ||c==-1)
{
return a*a*a;
}else
{
return a*b*c;
}
}