Lektion 54:

Typumwandlungs-Konstruktor

Bisher hatte die Klasse Rational nur einen Konstruktor.

   Rational(int zaehler,int nenner)
   {
      m_zaehler=zaehler;
      m_nenner=nenner;
      kuerzen();
   };

Günstig wäre es aber auch, wenn man einen Konstruktor hätte, der aus einfachen int-Zahlen Rational-Zahlen erzeugen kann.

   Rational(int zahl)
   {
      m_zaehler=zahl;
      m_nenner=1;
   };

Das erlaubt z.B. folgende main-Funktion:

void main()
{
   Rational a(3,14);
   cout<<"a=";// Ausgabe a=3/14
   a.print();
   cout<<endl;

   Rational b(4);
   cout<<"b=";// Ausgabe b=4/1
   b.print();
   cout<<endl;

   Rational c=a*b;
   cout<<"c=";// Ausgabe c=6/7
   c.print();
   cout<<endl;
};

Dieser Konstruktor wird als Typumwandlungs-Konstruktor verstanden. Er wandelt eine int-Zahl in eine Rational-Zahl um.

Und das schöne daran ist: Der Compiler erkennt den Konstruktor automatisch daran, daß er nur ein Argument braucht, als Typumwandlungs-Konstruktor. Ab jetzt wird er ihn auch automatisch aufrufen, wenn eine Rational-Zahl benötigt wird, aber Sie als Programmierer nur eine int-Zahl zur Verfügung stellen.

void main()
{
   Rational a(3,14);
   cout<<"a=";// Ausgabe a=3/14
   a.print();
   cout<<endl;

   Rational b=4;// Typumwandlungs-Konstruktor
   cout<<"b=";// Ausgabe b=4/1
   b.print();
   cout<<endl;

   Rational c=a*b;
   cout<<"c=";// Ausgabe c=6/7
   c.print();
   cout<<endl;

   Rational d=a*4;// Typumwandlungs-Konstruktor
   cout<<"d=";// Ausgabe d=6/7
   d.print();
   cout<<endl;
};


Falls Ihnen Fehler im Text auffallen oder Sie Verbesserungsvorschläge haben, dann schicken Sie mir bitte eine Mail. Ich werde mich dann sofort darum kümmern.
[aktuelle Version] [inhalt] [index]      [Fehlerkorrektur, Verbesserungsvorschlag]

© Volkard Henkel <volkard@normannia.de>, last update: 08/25/00