Ich habe einen Code durchsucht, den ich für ein Schulprojekt geschrieben habe, das mir bei näherer Betrachtung merkwürdig erschien. Ich hatte eine Klasse ähnlich dem unten:Zurückdrücken der Zeichenfolge in den Vektor der Objekte
class Foo {
public:
Foo(std::string s) : _s(s) {}
private:
std::string _s;
};
int main() {
std::string str = "Hiyo";
std::vector<Foo> f;
f.push_back(str); // Compiles. Weird to me though.
f.push_back(Foo(str)); // Predictably, this compiles as well.
return 0;
}
Warum ist der erste Aufruf von push_back
eine gültige Aussage, obwohl str
ist kein Foo
?
Dies sollte die akzeptierte Antwort sein, da es sich um "explizit" handelt – CinCout