pepe_C Geschrieben 26. Januar 2006 Teilen Geschrieben 26. Januar 2006 hallo an alle, wir akkern gerade die vererbung in c++ durch und ich hänge bei virtuellen basisklassen, denn ich hab viel im netz gefunden aber da steht generell man soll als anfänger die finger weglassen. nun meine frage für was benötige ich virtuelle basisklassen was bringen die mir eigentlich wenn es am ende eh nur komplikationen gibt, ich bekomm das einfach nicht in den kopf. mfg Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
carstenj Geschrieben 26. Januar 2006 Teilen Geschrieben 26. Januar 2006 Hi, Vererbung ist für die Objektorientierte Programmierung ein elementarer Punkt, und virtuelle Basisklassen sind in C++ nunmal die Art, wie man Polymorphismus realisiert. Die Finger davon zu lassen hieße ja quasi, einen wichtigen Punkt völlig außer Acht zu lassen. Polymorphismus ist dafür da, damit abgeleitete Klassen sich auch entsprechend verhalten. Angenommen du hast eine Basisklasse "Fahrzeug". Davon erbt sowohl "Auto" als auch "Fahrrad". Beide Klassen haben eine Methode "beschleunigen". Nun muss aber ein Fahrrad anders beschleunigt werden als ein Auto. Damit nun die abgeleiteten Objekte entsprechend ihres Typs "beschleunigt" werden, ist die Methode virtuell. Sh. z. B. hier: http://velociraptor.mni.fh-giessen.de/Programmierung/ProgII-htmldir/node9.html#SECTION00091000000000000000 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
pepe_C Geschrieben 26. Januar 2006 Autor Teilen Geschrieben 26. Januar 2006 nun so weit hab ichs jetzt und die erläuterung beweist mir das ich das nicht einfach damit abtun kann das ich es anders machen kann, aber was dein beispiel angeht kann ich da nicht einfach die methode der basisklasse überschreiben, denn wenn ich in der klasse fahrrad die methoden beschleunigen überschreibe (quasi ändere) dann erfüllt sie doch den gleichen zweck oder habe ich da jetzt nen denkfehler drin???? mfg PS.: danke für den link ist ne gute seite werd ich mir zu gemüte führen Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
carstenj Geschrieben 26. Januar 2006 Teilen Geschrieben 26. Januar 2006 Hallo, dann versteckst du deine Methode. Sobald du aber einen Basisklassenzeiger hast, der auf eine abgeleitetes Objekt zeigt, dann wird immer die Methode der Basisklasse aufgerufen. Das ist aber in dem Link imho erklärt. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
pepe_C Geschrieben 26. Januar 2006 Autor Teilen Geschrieben 26. Januar 2006 die methode der basisklasse "verdecke" ich, aber ich kann sie doch dann einfach wieder ansprechen oder täusche ich mich da so gewaltig. hier in den unterlagen steht das der compiler die verdeckte methode trotzdem "wiederfindet" oder verrenne ich mich gerade. wir lernen doch erst die 2 woche c++ und haben keinen lehrer sondern nur bücher und 2 tage die woche netz es ist einfach zu viel.will jetzt aber net rumheulen, ich glaube das gibt sich mit der zeit wenn ich ein bissel programmiert habe. ich danke dir trotzdem werd mich mal durch die seite im netz arbeiten bis mir der kopf qualmt danke Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Guybrush Threepwood Geschrieben 26. Januar 2006 Teilen Geschrieben 26. Januar 2006 Vererbung ist für die Objektorientierte Programmierung ein elementarer Punkt, und virtuelle Basisklassen sind in C++ nunmal die Art, wie man Polymorphismus realisiert. Die Finger davon zu lassen hieße ja quasi, einen wichtigen Punkt völlig außer Acht zu lassen. Stimmt Vererbung ist das A und O der Objektorientierung. Von der Mehrfachvererbung. Wovon man IMHO aber soweit wie möglich die Finger lassen sollte ist Klassen von mehreren anderen Klassen abzuleiten da man so sehr leicht die Übersicht verlieren kann und am Ende evtl. unerwünschte Nebeneffekte erziehlt. Als gute Beispiel hierfür dient die MFC (ich hätte nie gedacht das ich das mal sage ). Hier ist jede Klasse nur von maximal einer anderen Klasse abgeleitet. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
pepe_C Geschrieben 26. Januar 2006 Autor Teilen Geschrieben 26. Januar 2006 ich sehe es langsam ein, das die oop nicht ohne klassen und vererbung und ableitungen und so weiter auskommt! nun meine frage: ist es für mich als absoluter beginner nicht am besten ich gehe schön schritt für schritt und bleibe erstmal bei einer ableitung bzw eine ableitung von zwei basisklassen und versuche mich da an beispielprogrammen so mit zeigern und ähnlichem und wenn ich merke, mir geht es leichter von der hand und das verständnis für die logik entwikelt sich langsam und auch die umsetzung in quelltext gelingt mir leichter, das ich dann und erst dann beginne mich mit solchen sachen auseinander zui setzen???? mfg Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
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.