Hinweis: Das Forum wird geschlossen! Neue Registrierungen sind nicht mehr möglich!

 Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
C++ abgeleitete Klassen

 
Neuen Beitrag schreiben   Auf Beitrag antworten    Pro-Linux Foren-Übersicht -> Programmieren - C
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
bakunin



Anmeldungsdatum: 16.08.1999
Beiträge: 597
Wohnort: Lorsch (Südhessen)

BeitragVerfasst am: 16. Nov 2000 0:28   Titel: C++ abgeleitete Klassen

Hallo!

Nehmen wir an, es sei die Klasse "ober" gegeben, die nur ein Interface definiert und es würden mehrere Klassen davon abgeleitet, z.B. eine Namens "unter":
code:

class ober
{
public:
virtual int bar (int i) = 0;
};

class unter: public ober
{
public:
int bar (int i) { return i + 1; }
};


Nun möchte ich mit Objekte arbeiten, die von "ober" abgeleitet sind, egal um welche abgeleitete Klasase es sich handelt. Ein solches Objekt kann so erstellt und verwendet werden:

ober *qux = new unter;
std::cout << qux->bar (1) << endl;
delete qux;

Schön und gut, aber wenn ich schon in C++ programmiere, dann möchte ich Zeiger vermeiden. Ich möchte das gleiche mit einer Referenz realisieren (oder ist es üblich, in diesem Fall Zeiger zu verwenden?). Das funktioniert so:

ober &qux = *(new unter);

Ich frage mich aber, ob es da nicht eine schönere/bessere/gängigere Lösung gibt, weil das sieht in meinen Augen etwas komisch aus.

Grüße von Wolfgang, der unbedingt "ordentlich" programmieren will
 
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen

heinrich



Anmeldungsdatum: 22.09.1999
Beiträge: 219
Wohnort: N49.137 E8.544

BeitragVerfasst am: 16. Nov 2000 18:46   Titel: Re: C++ abgeleitete Klassen

> Schön und gut, aber wenn ich schon in C++ programmiere, dann möchte ich
> Zeiger vermeiden. Ich möchte das gleiche mit einer Referenz realisieren
Eine Frage: Warum _keine_ Zeiger ?

Selbst in Java wird es so realisiert, wie du es mit C skizziert hast. (ok ok in java dann mit abstrakter klasse...)

> ober* variable = new unter;
schaut doch gut aus...

> ober& variable = *(new unter);
iiiiieehhh wie hässlich....

code:

abstract class ober {
abstract int bar(int i);
}

class unter extends ober {
public int bar(int i) { return (i+1); }
}

public class test {
public static void main(String args[]) {
ober variable = new unter();
System.out.println( variable.bar(3) );
}
}

 
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name

hjb
Pro-Linux


Anmeldungsdatum: 15.08.1999
Beiträge: 3236
Wohnort: Bruchsal

BeitragVerfasst am: 16. Nov 2000 18:51   Titel: Re: C++ abgeleitete Klassen

Hi,

wenn man Objekte dynamisch erzeugen will, braucht man nunmal Zeiger.

Gruß,
hjb
_________________
Pro-Linux - warum durch Fenster steigen, wenn es eine Tür gibt?
 
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger

bakunin



Anmeldungsdatum: 16.08.1999
Beiträge: 597
Wohnort: Lorsch (Südhessen)

BeitragVerfasst am: 16. Nov 2000 19:16   Titel: Zeiger gegen Referenzen

Hallo!

Danke für die Antworten. Ich bin zwar durchaus in der Lage, das hinzunehmen, aber da ich hier eine Lücke in meinem Wissen habe, frage ich nochmal nach: Wo ist aus technischer Sicht das Problem mit Referenzen statt Zeigern für dynamisch generierte Objekte?

Grüße von Wolfgang
 
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen

heinrich



Anmeldungsdatum: 22.09.1999
Beiträge: 219
Wohnort: N49.137 E8.544

BeitragVerfasst am: 16. Nov 2000 21:12   Titel: Re: C++ abgeleitete Klassen

> Wo ist aus technischer Sicht das Problem mit Referenzen statt Zeigern
> für dynamisch generierte Objekte?
Zeiger können dürfen auch mal auf nix (also eigentlich besser: auf NULL) zeigen.
Referenzen müssen dagegen _immer_ auf irgendetwas zeigen.
 
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name

Beiträge vom vorherigen Thema anzeigen:   
     Pro-Linux Foren-Übersicht -> Programmieren - C Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehen Sie zu:  

Powered by phpBB © phpBB Group
pro_linux Theme © 2004 by Mandaxy