Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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

Geschrieben

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

Geschrieben

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

Geschrieben

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.

Geschrieben

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

Geschrieben
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 :rolleyes: ). Hier ist jede Klasse nur von maximal einer anderen Klasse abgeleitet.

Geschrieben

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

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...