Betrachten wir die Klasse foo
mit zwei Konstrukteuren wie folgt definiert:Warum gibt es eine implizite Typkonvertierung von Zeigern nach bool in C++?
class foo
{
public:
foo(const std::string& filename) {std::cout << "ctor 1" << std::endl;}
foo(const bool some_flag = false) {std::cout << "ctor 2" << std::endl;}
};
die Klasse mit einem String-Literal instanziiert, und erraten, welche Konstruktor aufgerufen wird?
foo a ("/path/to/file");
Ausgang:
Ctor 2
Ich weiß nicht, über Sie, aber ich finde nicht, dass das intuitive Verhalten in der Programmierung der Geschichte. Ich wette, es gibt einen klugen Grund dafür, und ich würde gerne wissen, was das sein könnte?
möglich Duplikat von [Warum wählt der Compiler bool over string für die implizite Typumwandlung von L ""?] (Http://stackoverflow.com/questions/316181/why-does-the-compiler-choose-bool-over -string-for-implicitype -cast-of-l) – Hasturkun
Noch eine ähnliche Frage: [Funktion/Methode Überladung C++: Datentyp Verwirrung?] (http://stackoverflow.com/questions/1636181/function-method-overloading- c-data-type-confusion) – Athari
Entschuldigung. Ich habe gesucht (da ich dachte, dass es eine FAQ wäre), aber ich habe keine Fragen mit einem Titel gefunden, der andeutete, dass die Frage so war. – Oystein