【发布时间】:2013-01-24 01:58:13
【问题描述】:
我正在尝试编写一个具有一些重载方法的 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++ 很陌生!
【问题讨论】:
-
@meh,因为它们不是实例函数。
-
你的
const char*是一个原生类型提升到 bool 和一个构造值类型提升到std::string。 你会选择哪个。 ?现在猜猜编译器选择了哪一个.. -
你传递的是 const char *,而不是字符串,试试 Output::Print(std::string("Hello World"))
-
关于“静态”:在 C++ 中,函数可以摆脱类系统的束缚,所以你不需要像在 Java 中那样制作准类。
-
@molbdnilo,是的,我知道你可以拥有无类函数,我猜有点像 JavaScript,其中函数不需要绑定到原型......再次,因为我是新手C++,我不确定这里的最佳做法是什么。
标签: c++ string boolean overloading overload-resolution