我的程序如下:
class xxx{
public: explicit xxx(int v){cout<<"explicit constructor called"<<endl;}
xxx(int v,int n=0){cout<<"default constructor called"<<endl;}
};
int main(int argc, char *argv[])
{
xxx x1(20); //should call the explicit constructor
xxx x2(10,20); //should call the constructor with two variables
return 0;
}
编译时出现错误:- “重载 âxxx(int)â 的调用不明确”
我知道编译器发现两个构造函数签名相等,因为我默认设置了一个参数'0'。
编译器有什么方法可以区别对待签名并且程序可以成功编译?