首页 > 解决方案 > 前向声明是否修复了参数的数量?

问题描述

我现在正在学习c++,并为自学做了一些实验。

似乎如果一个函数是用默认值分配的变量声明的,那么该函数不需要那些具有默认值的变量的参数。

int foo(int a, int b, int c = 3)
{
    return a+b+c;
}

int main()
{
    int q = foo(2,5); //results 10
    printf("result is %d \n", q);
}

但是,如果我进行前向声明,编译器会抱怨参数的数量。

int foo(int a, int b, int c);

int main()
{
    int q = foo(2,5); //compiler error
    printf("result is %d \n", q);
}

int foo(int a, int b, int c = 3)
{
    return a+b+c;
}

错误:函数'int foo(int,int,int)'的参数太少

为什么?

标签: c++

解决方案


简单来说,原型需要包含默认参数值:

int foo(int a, int b, int c = 3);

当你定义函数时,你省略它:

int foo(int a, int b, int c)
{
    return a+b+c;
}

推荐阅读