我对于关于它为什么调用第一个构造函数的程序感到困惑.
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;
}
Run Code Online (Sandbox Code Playgroud)
输出是
Constructor without arg
"AMD"是a const char[],它被隐式转换为const char*,所以第一个构造函数[ A(const char *c="\0")]是最佳匹配.
请注意,这A(const char *c="\0")不是没有参数的构造函数,它是一个构造函数,它将单个const char*作为参数,并且具有可选的默认值,以便在const char*未指定a时使用.在这种情况下,你传递一个const char*,所以它使用它.
| 归档时间: |
|
| 查看次数: |
121 次 |
| 最近记录: |