Я пытаюсь написать класс С++ с некоторыми перегруженными методами:
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");
это результат
Истинный
Итак, почему, когда я определил, что метод может принимать логические и строковые значения, он использует логическую перегрузку, когда я передаю нелогическое значение?
EDIT: я работаю в среде C#/Java, так что совершенно не знаком с C++!
const char*
– это продвижение нативного типа до bool и повышение типа сконструированного значения доstd::string
. Что бы вы выбрали. ? Теперь угадайте, какой из них выбрал компилятор. - person WhozCraig   schedule 08.02.2013