如何将可选参数传递给C ++中的方法?

时间:2015-09-08 02:22:43

标签: c++ c++11

如何将可选参数传递给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);}

3 个答案:

答案 0 :(得分:5)

在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 library假冒支持命名参数,但我从未使用它。

答案 1 :(得分:2)

是的,但是,简短的回答是具有默认值的参数不能在不获取默认值的参数之前。所以:

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

答案 2 :(得分:1)

是的,但你只能做到最右边的元素。所以你可以写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),但不是你给出的例子。