为什么C++将我传递的字符串字面值转换为布尔值而不是字符串?
#include <iostream>
using namespace std;
class A
{
public:
A(string v)
{
cout << v;
}
A(bool v)
{
cout << v;
}
};
int main()
{
A("hello");
return 0;
}
输出: 1
是因为编译器不够聪明,不能从char *自动转换到string类型,只能假定bool类型是指针的最接近类型吗?我的唯一选择是创建一个显式的char *构造函数,它基本上和string构造函数做相同的事情吗?