String-Literal entspricht der Bool-Überladung anstelle von std :: string
Ich versuche, eine C ++ - Klasse zu schreiben, die einige überladene Methoden hat:
class Output
{
public:
static void Print(bool value)
{
std::cout << value ? "True" : "False";
}
static void Print(std::string value)
{
std::cout << value;
}
};
Nehmen wir nun an, ich rufe die Methode wie folgt auf:
Output::Print("Hello World");
das ist das Ergebnis
Wahr
Warum verwendet die Methode, wenn ich festgelegt habe, dass sie Boolesche Werte und Zeichenfolgen akzeptieren kann, die Boolesche Überladung, wenn ich einen nicht-booleschen Wert übergebe?
EDIT: Ich komme aus einer C # / Java-Umgebung, also ziemlich neu in C ++!