CAR+与BOL之间的C++怪异函数重载

CAR+与BOL之间的C++怪异函数重载,c++,programming-languages,C++,Programming Languages,以下测试程序有两个同名、不同参数类型的函数。我通过传递一个条件表达式作为参数来调用该函数 我在等书面价值?是:否将调用Writeconst 然而,字符串调用Writebool。为什么? 您可以通过替换来解决问题 Write(value ? "yes" : "no"); 借 问题如下:您没有定义一个将char*作为参数的函数,因此必须进行隐式转换。但是,隐式转换为bool而不是std::string,因为bool是内置类型。Side:include。这与条件运算符无关;如果你通过,它会叫Writ

以下测试程序有两个同名、不同参数类型的函数。我通过传递一个条件表达式作为参数来调用该函数

我在等书面价值?是:否将调用Writeconst 然而,字符串调用Writebool。为什么?


您可以通过替换来解决问题

Write(value ? "yes" : "no");


问题如下:您没有定义一个将char*作为参数的函数,因此必须进行隐式转换。但是,隐式转换为bool而不是std::string,因为bool是内置类型。

Side:include。这与条件运算符无关;如果你通过,它会叫Writebool是的。
Write(value ? "yes" : "no");
Write(string(value ? "yes" : "no"));