Kann ein überladener Konstruktor irgendwie einen anderen Konstruktor innerhalb der Klasse aufrufen, ähnlich dem folgenden Code?Gibt es in C++ einen Convenience-Konstruktor?
class A {
public:
A(std::string str) : m_str(str) {}
A(int i) { *this = std::move(A(std::to_string(i))); }
std::string m_str;
};
Der obige Code funktioniert, aber ich habe Angst, dass das Aufrufen dieses im Konstruktor zu undefiniertem Verhalten führen kann.
Wenn ja, könnten Sie bitte erklären warum und schlagen Sie auch eine bessere Alternative vor?
Der Begriff Sie suchen, ist "delegieren Bauer". – nwp
Warum nicht? A (int i): m_str (std :: to_string (i)) {} '? – CoryKramer
Dies ist ein minimales Beispiel. Ich möchte einen Konstruktor überladen, der 7 Parameter akzeptiert, von denen 4 Standardwerte haben, und ich möchte es vermeiden, die Standardwerte explizit an mehr als einem Ort festzulegen. – Makaronodentro