C++ Tutorial #16 - virtual and more about inheritance

Поділитися
Вставка
  • Опубліковано 16 гру 2024

КОМЕНТАРІ • 26

  • @bjrnironside9948
    @bjrnironside9948 Рік тому +3

    Lieber Morpheus,
    deine Tutorials begleiten mich schon seit dem 1. Bachelorsemester. Jetzt, 6 Jahre später, und in meiner ersten Anstellung als SW-Ingenieur, bin ich wieder hier. Danke und weiter so!

  • @nicoxxl26
    @nicoxxl26 7 років тому +29

    gut erklärt gute qualität sowie sound als auch bild, hast ne motivierende stimme, nicht so wie die anderen die sich anhören als würden sie grade einschlafen

  • @berkoh2918
    @berkoh2918 5 років тому +20

    4:47 Wenn Morpheus an seine Freundin will, aber sie nicht möchte

  • @raffaelkurz6342
    @raffaelkurz6342 3 роки тому +3

    echt so toll erklärt. mach bitte weiter so

  • @MasterOfTorque6871
    @MasterOfTorque6871 2 роки тому

    Sehr hilfreiches Tutorial!

  • @Sichel22
    @Sichel22 3 роки тому +2

    sehr nice!
    hat mir sehr weitergeholfen und die erklärung der pointer hilft einem gut fürs verständnis ! (zumindest mir ^^)
    vorallem ist ja sowas für games mit items etc mega wichtig (ja etwas nerdy aber hey :D)
    Danke fürs video :) !

  • @trysam6952
    @trysam6952 6 років тому +4

    wer kennt sie nicht? Die LEGENDÄRE Katze namens hund!!!

  • @lydiaewande8813
    @lydiaewande8813 7 років тому +1

    Sie erklären super gut! !!!! Danke

    • @lydiaewande8813
      @lydiaewande8813 7 років тому

      ich habe eine Methode mit struct geschrieben aber das meckert immer.
      Bruch add (Bruch Bruch1, Bruch Bruch2 )// der Prototyp ist so vorgegeben worden {
      // ich habe folgendes verfahren
      Bruch Resultat;
      Resultat = Bruch1 + Bruch2;
      return Resultat;}
      ich muss eine Variable mit dem Datentyp Bruch deklarieren und die Summe meiner beiden Brüche speichern und zurückgeben.
      ich hatte zwei Instanzen int Nenner , Zaehler deklariert.

    • @TheMorpheusTutorials
      @TheMorpheusTutorials  7 років тому +1

      Danke :)
      vermutlich ist auf der Operator + nicht definiert.
      Ich nehme mal an, du hast für die Brüche 2 Attribute Nenner und Zaehler?
      Dann kannst du einfach Bruch1.zaehler + Bruch2.zaehler und Bruch1.nenner + Bruch2.nenner rechnen und die Ergebnisse dann in einen Konstruktor des Typs Bruch übergeben, was dir einen neuen Bruch liefert.
      Diesen kannst du dann als Ergebnis zurückgeben :)

  • @wadikbotwadik
    @wadikbotwadik 7 років тому +1

    Danke, hast mir wirklich geholfen! :)

  • @Flosch1994
    @Flosch1994 4 роки тому +1

    Kann es sein, das mitlerweile die Konstruktoren bei vererbung übernommen werden?
    Bei mir (Visual Studio 2019) funktioniert es.
    Das überladen der Operatoren wird nicht übernommen.

  • @pasischei6951
    @pasischei6951 6 років тому +1

    Danke

  • @needejackson4350
    @needejackson4350 3 роки тому

    Wenn du eine Instanz aus Hunde-Klasse in einer Instanz aus Tier-Klasse speicherst, wird natürlich die Methode, die durch Hund-Klasse überschrieben wurde, nicht übernommen. Weil man ja in dieser Methode eventuell Member hat, die nur in der Hund-Klasse vorhanden sind. Also das hat schon Sinn. Und am Ende zeigst du dass das durch einen Pointer gelöst wird. Ich glaube aber da hat man nicht mehr mit der Klasse "Tier" zu tun. weil die Instanz "abc" einfach die Adresse der bereits erstellten Instanz von "ace" ist. "abc->wieMachtDasTier()" ist meiner Meinung nach gleich "ace.wieMachtDasTier()"

    • @nukularpictures
      @nukularpictures 3 роки тому

      Ja in dem Fall verweist abc nur auf ace. Aber ohne das virtual würde der Compiler dennoch die Funktion der Basisklasse übernehmen. Es ist also schon sinnvoll.
      Wichtig wird es wenn man einen Vector aus Tieren hat. Man hätte dann sowas
      std::vector tiere;
      tiere.push_back(new Katze());
      tiere.push_back(new Hund());
      Dann ist es schon hilfreich, da man ohne den typecast zurück auf die eigentliche Klase die abgeänderte Funktion dieser Klasse nutzen kann. Also könnte ich einfach wieMachtDasTier() für jedes Element des Vektors aufrufen und würde die richtige Ausgabe erhalten.

  • @prometheus0534
    @prometheus0534 5 років тому

    Na, also das bei Minute 3:45 würde ich nicht so machen mit dem überschreiben. Ich würde es vielleicht mit Parametern machen.

  • @hendrikm9035
    @hendrikm9035 2 роки тому

    Könnte mir jemand erklären, was genau die Zeile
    Hund(string newname):name(newname){}
    ausführt?
    Vielen Dank für deine Videos :)

    • @philippwiler3880
      @philippwiler3880 2 роки тому

      Diese Zeile weist name = newname zu. Normalerweise würde man das in den geschweiften Klammern tun {}. Sobald ein Objekt aber erstellt wird, muss für jede Membervariable in dem Objekt Speicher reserviert werden. Um direkt bei der Erstellung der Variable name den Wert newname zuzuweisen und nicht erst nach der Erstellung wie es in {} der Fall wäre, gibt es diese besonderen Doppelpunkte. Es ist also einfach effizienter als die Zuweisung in {} zu machen, dies geht aber genauso.

  • @prometheus0534
    @prometheus0534 5 років тому

    TheMorpheusTutorials, konvertiert Biber zu Hunden...