关于c++的一个基础问题

已知程序中已经定义了函数test,其原型是int test(int,int,int);,
则下列重载形式中正确的是
A.char test (int,int,int);
B.double test(int,int,double);
C.int test(int,int,int=0);
D.float test(int,int,float=3.5F);

答案不是应该选c吗,为啥标准答案是b

首先,c和d都是错误的语法
如果想参数有默认值,那应该在函数定义里写值,而不是在函数声明的地方写
同时,a和c都有同一个问题,就是参数类型与原型一致,这导致调用的时候编译器没法知道你到底想调用哪个重载
只有B,参数类型是不同的

C和原函数是一样的,重定义了

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^