ycs*_*hao 3 c++ overloading conditional-operator function-parameter
我有两个重载功能
void foo(std::string value);
void foo(bool value);
Run Code Online (Sandbox Code Playgroud)
我打电话的时候
foo(true ? "a" : "b");
Run Code Online (Sandbox Code Playgroud)
为什么函数需要一个布尔值而不是字符串?
jua*_*nza 10
在bool过载提供了一个更好的匹配,因为你得到了之间的转换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");
}
Run Code Online (Sandbox Code Playgroud)
输出:
布尔
如果你提供过载
void foo(const char*) {}
Run Code Online (Sandbox Code Playgroud)
然后那个人会被召唤.