我对以下程序为什么调用第一个构造函数感到困惑。
class A
{
public:
A(const char *c="\0")
{
cout<<"Constructor without arg";
}
A(string c)
{
cout<<"New one";
}
};
int main()
{
A a="AMD";
return 0;
}
输出是
不带参数的构造函数
最佳答案
"AMD"
是一个const char[]
,隐式转换为const char*
,所以第一个构造函数[A(const char *c="\0")
]是最佳匹配。
请注意 A(const char *c="\0")
不是一个没有参数的构造函数,它是一个接受单个 const 的构造函数char*
作为参数,并且在未指定 const char*
时使用可选的默认值。在本例中,您传递的是 const char*
,因此它会使用它。
关于c++ - 为什么调用这个构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12516560/