c++ - 前向声明是否修复了参数的数量?
问题描述
我现在正在学习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)'的参数太少
为什么?
解决方案
简单来说,原型需要包含默认参数值:
int foo(int a, int b, int c = 3);
当你定义函数时,你省略它:
int foo(int a, int b, int c)
{
return a+b+c;
}
推荐阅读
- r - 使用脆弱项测试 cox 比例风险假设时出错
- java - 我的世界插件开发中的错误:它是最新的吗?IllegalStateException:初始初始化
- zip - 损坏的 zip 文件(尝试了几乎所有工具都无法修复)
- javascript - Odin 项目 - 基础 4 练习 - sumAll
- android - Android只更新TextView的部分文字
- c# - NET Core 3.1 MVC 输入验证不起作用
- aws-lambda - DynamoDB // Lambda // 不一致的记录
- c# - C# 自定义事件不起作用,有人有建议吗?
- sql - 如何在 SQL Server 2016 中连接列数据?
- c - Posix 时区字符串到 Olson 字符串