【C++】 error C2572: 重定义默认参数

您所在的位置:网站首页 cj2312参数 【C++】 error C2572: 重定义默认参数

【C++】 error C2572: 重定义默认参数

2023-06-17 01:37| 来源: 网络整理| 查看: 265

       

【fishing-pan:https://blog.csdn.net/u013921430转载请注明出处】 前言

       当debug时遇到这个错误C2572: “XXXX”: 重定义默认参数,往往是因为在函数的声明和定义中同时给参数设定了默认值。想修改这个错误,你只需将函数的定义中的形参默认值部分删除即可。(注:不是删除形参,而是删除默认值部分)例如以下这种情况,编译器就会报错;

Student(int a , char *n = "default name"); //函数声明 Student::Student(int a, char *n = "default name" ) //函数定义 { /*函数实现*/ }

      修改后的代码如下;这样程序就能正常运行了。

Student(int a , char *n = "default name"); //函数声明 Student::Student(int a, char *n ) //函数定义 { /*函数实现*/ } 问题分析

       这个错误并不是什么大问题,因为在写代码的过程中,为了省事,大家都会习惯性的把函数的声明直接粘贴到函数的定义处。至于说为什么不能在函数的声明和定义处同时给形参以默认值,我查阅了一些书籍都没有给出明确的解释。大家只需记住即可。(OS:这根本就不算分析好吗?)

       我又好奇的想了一下,能不能在函数的声明中不给予形参默认值,而在定义中给予默认值呢?所以我又试了一下。测试是在VS2013下进行的。测试结果是也可以运行。但是我又在另一种情况下进行了测试,发现无法运行。下面这种情况中就不可以,因为main() 函数调用func() 函数时,根据函数声明,形参并没有默认值,所以调用函数时,不能使用缺省的参数值。

int func(int a); void main() { int aa = func(5); int bb = func(); //报错 cout


【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3