如何在c++中传递可选参数给方法

How to pass optional parameter to a method in C++?

本文关键字:参数 方法 c++      更新时间:2023-10-16

如何在c++中传递可选参数给方法?

是否有一种方式,就像在c#中,我们可以使用这个语句Func(identifier:value),它允许我传递值给任何我想要的参数....例如:

   //C# Code
   void func(int a=4,int b,int c)
    {
    int sum=a+b+c;
    Console.Write(sum);
    }
    void Main(){ func(b:5,c:6);}

在c++中,默认参数必须放在最后,所以你可以这样写:

void func(int b, int c, int a=4)
{
    int sum = a+b+c;
    std::cout << sum;
}
int main() {
    func(5, 6); // b = 5, c = 6, a uses the default of 4
}

您不能像在c#或Python中那样在所有调用站点提供命名参数。有一个boost库来支持命名参数,但我从未使用过它。

是的,但是,简短的回答是,具有默认值的参数不能放在没有默认值的参数前面。所以:

void func(int a=4,int b,int c) {} //doesn't work
void func(int b, int c, int a = 4){} //works

更多信息请参见http://en.cppreference.com/w/cpp/language/default_arguments

可以,但是您只能对最右边的元素这样做。所以你可以写void func(int a, int b, int c=4)void func(int a, int b=2, int c=4)甚至void func(int a=1, int b=2, int c=4),但不是你给的例子