gpt4 book ai didi

c++ - 使用少于需要的参数调用函数

转载 作者:太空宇宙 更新时间:2023-11-04 11:22:45 26 4
gpt4 key购买 nike

我想在另一个函数 XYZ 中调用一个函数 ABC 但除了 s 之外,另一个函数的参数不可用。我什至不需要它们。我的目的将只用 s 来解决。但是因为我已经用参数stu 声明了函数。我需要这样声明,因为函数 ABC 需要它们。

现在如何解决这个问题。

bool ABC (int s, float t, int u)
{
Function Implementation;
}

void XYZ (float a)
{
Statement 1;
Statement 2;

if(ABC(s, t, u))
Statement 3;

}

void main()
{
Have parameters s, t, u and a with me.

//Call Function
XYZ(a);

}

最佳答案

您已经拥有 bool ABC (int s, float t, int u)功能。如果您声明另一个名为 ABC 的函数也只有一个参数(在您的情况下为 s),那么您可以使用任何具有相同名称的函数:

bool ABC (typename s)  //the return type can be anyithing, not necessarily bool
{
Another Function Implementation;
}

现在您可以使用带有一个参数的 ABC 函数,并且您有另一个版本带有 3 个具有相同函数名称的参数。这就是函数重载的实际意义。

if(ABC(s)) //ABC(s,t,u) would be working too
Statement;

请注意,C++ 语言为您提供了第二种处理可选参数的方法。通过使用特定值初始化最后 n 个参数,您将能够保留其中的一些参数。在这种情况下,在函数的实现中,左边的参数将被赋予初始值:

bool ABC (int s, float t=0, int u=0)
{
Function Implementation;
}

int main()
{
//ABC() won`t work
ABC(2) //s=2; t=0; u=0;
ABC(2,3) //s=2; t=3; u=0;
ABC(2,3,4) //s=2; t=3; u=4
}

请注意这一点,因为您不能通过调用带有两个参数的函数来仅设置 su。函数声明中参数的顺序很重要。

此外,为您的声明中的参数分配您的函数不应以正常方式获取的值(这些可以是 0,INT_MIN (整数值的最小值 - 在 <climits> 中定义)或其他取决于您的问题)您可以在实现中轻松检查用于调用函数的参数数量:

#include <climits>
#include <cfloats>

bool ABC (int s, float t=FLT_MAX, int u=INT_MAX)
{
if(u == INT_MAX){...} //this means that you don`t set u

if(t == FLT_MAX){...} //this means you set only s
}

关于c++ - 使用少于需要的参数调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27703285/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com