刀刃赤神 2023-05-06 11:00 采纳率: 66.7%
浏览 20
已结题

C++中函数的默认参数问题

我定义了一个三个有默认值参数的函数

int demo1(int a, int b, int c);
int demo1(int a = 1, int b = 2, int c = 3){
    return a+b+c;
};

当我尝试调用并传入两个参数的时候显示编译报错,并且我发现当我不传参数,只传一个,全参调用都没有问题,唯独传入两个的时候会编译报错

demo1();
demo1(1);
demo1(4,3);    //唯独这行编译报错
demo1(6,6,6);

这个是什么原因导致的呢?
而且当我把函数所需的参数提高到4个后

demo1();
demo1(1);
demo1(4,3);      //编译报错
demo1(6,6,6);   //编译报错
demo1(6,6,6,6);

十分不理解,难道对于有默认值的函数,只能是要么全使用要么是只能传入第一个实参吗?

  • 写回答

3条回答 默认 最新

  • 快乐鹦鹉 2023-05-06 11:05
    关注

    报错信息看一下呢?按说应该只有提供3个参数的会报错,不知道到底匹配哪一个。
    你把第3行demo1(4,3)删除的话,就没有报错了?

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 5月14日
  • 已采纳回答 5月6日
  • 创建了问题 5月6日

悬赏问题

  • ¥15 一道ban了很多东西的pyjail题
  • ¥15 关于#r语言#的问题:如何将生成的四幅图排在一起,且对变量的赋值进行更改,让组合的图漂亮、美观@(相关搜索:森林图)
  • ¥15 C++识别堆叠物体异常
  • ¥15 微软硬件驱动认证账号申请
  • ¥15 有人知道怎么在R语言里下载Git上的miceco这个包吗
  • ¥15 GPT写作提示指令词
  • ¥20 根据动态演化博弈支付矩阵完成复制动态方程求解和演化相图分析等
  • ¥20 关于DAC输出1.000V对分辨率和精度的要求
  • ¥15 华为超融合部署环境下RedHat虚拟机分区扩容问题
  • ¥15 哪位能做百度地图导航触点播报?