C++带默认参数的构造函数和重载的构造函数是否可能会发生调用的歧义?如何解决?

2025-02-27 13:07:25
推荐回答(3个)
回答1:

如果带默认参数的构造函数去掉默认参数后,与重载的构造函数形式一致

那么就会出现二义性

既然带默认参数的构造函数能够与重载的构造函数出现二义性。说明你重载的构造函数没有意义。
他并不能区分一种构造类型。

也就是说,你直接用带默认参数的构造函数来代替重载的那个构造函数就可以了

回答2:

要求两个函数的参数表不同(类型或者个数)。进行函数调用时,系统会根据函数名和参数表唯一确定调用哪一个函数。当程序中有模版函数和非模版函数时,优先调用非模版函数,即一般函数。

回答3:

有歧义。
已经有了Test(int a=0, int b=0)int没必要再定义Test()