Zum Inhalt springen

klasse mit mehreren konstruktoren (überlagerung)


korea1

Empfohlene Beiträge

hi, hab folgenden code:


//############# header file #############
class bruch
{
protected:
int zaehler;
int nenner;
public:
bruch();
void bruch_eingeben (void);
void bruch_ausgeben (void);
~bruch();
};

bruch::bruch(void)
{
zaehler = 0;
nenner = 1;
}

void bruch::bruch_eingeben (void)
{
cout << "geben sie den zaehler ein:";
cin >> zaehler;

cout << "geben sie den nenner ein:";
cin >> nenner;
}

void bruch::bruch_ausgeben (void)
{
cout << "der von ihnen eingegebene bruch lautet: " << zaehler << "/" << nenner << endl << endl;
}

bruch::~bruch(void)
{
}

//########### hauptprogramm ############
#include "Brüche.h"

void main (void)
{
cout << "**** Brueche eingeben *****" << endl;

bruch mein_bruch;
mein_bruch.bruch_eingeben();
mein_bruch.bruch_ausgeben();

bruch mein_bruch2(1,4);
mein_bruch2.bruch_ausgeben();

cout << "******* Ende *******" << endl;

getch();

}
[/PHP]

wie bekomm ich das hin, dass ich [color=red]mein_bruch2[/color] mit 1 und 4 initialisieren kann?

dazu brauch ich einen zusätzlichen konstruktor,od?

kann mir dass mal einer zeigen, habs zwar probiert, hat aber nicht funktioniert.

meine idee war in der klasse:

[PHP]bruch(int,int);

und bei den methodendefinitionen dann:

bruch::bruch(int,int){};

da sind dannn aber ziemlich komische werte bei rausgekommen.

danke korea1

Link zu diesem Kommentar
Auf anderen Seiten teilen

hi,

dass mit dem überladen hab ich noch nie gemacht, soll ich jetzt aber. hm... ??

also ich hab ja siehe code oben mit bruch mein_bruch2(1,4); ein neues obj erstellt. dieses sollte als wert den bruch 1/4 haben und auch ausgeben.

bekommen habe ich aber folgendes: -858993460/-858993460

je nach initialisierung müsste sich das programm doch den richtigen konstruktor raussuchen, oder?

also bruch neuer_bruch; => gibt mir demnach ja 0/1 s. 1. konstruktor bruch();

burch neuer_bruch2(1,4) => sollte dann doch 1/4 ergeben

oder hab ich da was falsch verstanden?

korea1

Link zu diesem Kommentar
Auf anderen Seiten teilen

Es reicht nicht, wenn du (int, int) als Parameter nimmst, du musst auch einen Variablennamen mitgeben.

Beispiel:

in der *.h:



class KomplexZahl

{

    public:

        KomplexZahl();

        KomplexZahl(int zahl);  // expliziter Konstruktor

    ...

}


in der *.cpp:


KomplexZahl::KomplexZahl()

{

    ...

}


KomplexZahl::KomplexZahl(int zahl)

{

    ergebnis = zahl;

}


Link zu diesem Kommentar
Auf anderen Seiten teilen

Original geschrieben von roaxius


KomplexZahl::KomplexZahl(int zahl)
{
ergebnis = zahl;
}
[/code] [/b]Initialisierungslisten sind besser:
[CODE]KomplexZahl::KomplexZahl(int zahl) :
ergebnis( zahl )
{
}

Achtung, die Ausführungsreihenfolge der Initialisierungen hängt von der Reihenfolge in der Klassendeklaration ab, nicht von der Reihenfolge in der Initialisierungsliste.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...