我有两个重载函数
void foo(std::string value);
void foo(bool value);
当我用
foo(true ? "a" : "b");
为什么函数需要一个布尔值而不是字符串?
我有两个重载函数
void foo(std::string value);
void foo(bool value);
当我用
foo(true ? "a" : "b");
为什么函数需要一个布尔值而不是字符串?
bool
重载提供了更好的匹配,因为您可以在 a 和 之间进行const char*
转换bool
。字符串重载需要转换为用户定义的类型。
条件运算符与它无关。例如,
#include <string>
#include <iostream>
void foo(bool) { std::cout << "bool" << std::endl; }
void foo(std::string) { std::cout << "string" << std::endl; }
int main()
{
foo("a");
}
输出:
布尔
如果您要提供重载
void foo(const char*) {}
然后会调用那个。