我正在尝试编写一个C++类,其中包含一些重载的方法:
class Output
{
public:
static void Print(bool value)
{
std::cout << value ? "True" : "False";
}
static void Print(std::string value)
{
std::cout << value;
}
};
现在假设我按以下方式调用该方法:
Output::Print("Hello World");
这是结果
真
那么,既然我定义了该方法可以接受布尔值和字符串,为什么在我传递非布尔类型的值时会使用布尔重载呢?
编辑:我来自C#/Java环境,对C ++相当陌生!
const char*
是本地类型提升为布尔值,以及构造值类型提升为std::string
。你会选择哪一个?现在猜猜编译器选择了哪一个... - WhozCraig