Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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

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

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

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.

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

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.

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

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.