Typumwandlungskonstruktor
-
Hallo,
hab schon mehrere Threads zu diesem Thema durchgelesen und auch zahlreichen Tutorials und Scripts, doch kann immer noch nicht nachvollziehen, was der Typumwandlungskonstruktor ist.
Wir sollen es fürs nächste Prartikum in unser Program "Rationale Zahlen" implementieren, und zwar in der FormRatio (const std::strings&);
kann damit leider überhaupt nichts anfangen, was soll es zu was umwandeln, wo soll er aufgerufen werden, wie usw. bitte um Hilfe.
-
Hallo,
das Wort "Typumwandlungskonstruktor" habe ich so meines Wissens noch nie gehört. Vermutlich bedeutet das, dass du eine Funktion
void foo(Ratio)mit einem std::string aufrufen kannst, der dann automatisch mittels dieses Konstruktors in ein Ratio-Objekt "umgewandelt" wird.
-
dein lehrer/... meint damit den conversion constructor. du hast einen typ, von dem du eine instanz erstellen willst (ratio), hast aber nur ein objekt eines anderen typs (std::string).
du baust also so was:class ratio { int num, dem; ratio(const std::string& val) { std::stringstream ss(val); char unused; ss >> num >> unused >> dem; } };
-
class ratio { long numerator_, denominator_; public: ratio(long n=0, long d=1) : numerator_(n), denominator_(d) {} long numerator() const {return numerator_;} long denominator() const {return denominator_;} }; void foo(ratio); int main() { ratio r = 5; // klappt, dank Typumwandlungs-Konstruktor (int -> ratio) foo(42); // klappt auch ... (immer noch "Kopier-Initialisierung") }ratio::ratio(long=0,long=1) ist ein Default-Konstruktor, da man ihn ohne Parameter aufrufen kann. Es ist auch ein Typumwandlungskonstruktor, da er mit einem Parameter aufrufbar ist und nicht mit
explicitgekennzeichnet ist.