[C++ von { bis }] 10 - Referenzen

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

КОМЕНТАРІ • 17

  • @bytesnobjects
    @bytesnobjects  11 років тому +2

    Als Javajaner ist es ganz einfach: für die allermeisten Belange sind C++-Referenzen gleich Javaparametern. Sprich: du bekommst keine Kopie des übergebenen Wertes, sondern direkten Zugriff auf's Original. Bei call-by-value ist das anders: da wird auf dem Stack Speicher reserviert, das übergebene Objekt kopiert, du kannst damit in der Funktion arbeiten und wenn die Funktion zuende ist, wird die Kopie vernichtet. Alle Änderungen an der Kopie bleiben im Inneren der Funktion und verschwinden am Ende.

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

    Du bist der Hammer❤️

  • @fan-qp2xy
    @fan-qp2xy 10 років тому +1

    Super Video.
    Eine konstante Referenz ist eine Referenz auf einen konstanten Typ, oder?
    Im vorigen Video hattest du unterschieden zwischen einen Pointer auf einen konstanten Typ einen konstanten Pointer auf einen Typ.

    • @bytesnobjects
      @bytesnobjects  10 років тому +1

      Richtig. Also der Ausdruck "Typ const &". Beim Poiner sieht das etwas anders aus, weil sowohl der Pointer selbst konstant sein kann (man also den Wert des Pointers nicht ändern kann, Ausdruck Typ * const) oder aber das Objekt, auf das er zeigt (Das wäre dann Typ const & oder const Typ *). Oder natürlich beides (Typ const * const, bzw. const Typ * const). Bei einer Referenz macht das Konzept "Ändern der Referenz" keinen Sinn, weil das gar nicht geht. Daher geht es hier bei der Konstantheit immer um das Objekt, auf das die Referenz verweist.

  • @baldebaldemord9588
    @baldebaldemord9588 6 років тому

    Eine Frage zum Beispiel mit der const ref: Gilt die Konstanz nur solage die Referenz innerhalb des Bodies der aufgerufenen Funktion verwendet wird? Also könnte man nach Verlassen der Funktion den Wert der referenzierten Variable wieder verändern?

    • @bytesnobjects
      @bytesnobjects  6 років тому

      Balde Baldemord richtig. Stell dir const Referenz wie ein geschlossenes Fenster auf die originale Variable vor: du kannst durchgucken, aber nix damit machen. Bist du draußen vorm Fenster (außerhalb der Funktion), kannst du natürlich mit der Variable machen, was du willst.

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

    Kann ich mir eine Referenz also wie eine Verknüpfung auf dem Desktop vorstellen?

    • @bytesnobjects
      @bytesnobjects  5 років тому +1

      Sehr grob gesagt: ja. Allerdings passt das Bild eher auf einen Pointer, als auf eine Referenz. Die sind intern zwar meist das gleiche, aber das Verhalten an der "Oberfläche" (sprich: im Programm) ist etwas anders.

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

    für was ist dann int& g(void) z.B?
    hab das jetzt schon öffters als Elementfunktionen von Klassen gesehn...

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

      Typischerweise geben solche Funktionen Zugriff (auch schreibend in dem Fall) auf Elemente, die unter der Kontrolle eines Objektes der Klasse stehen. Bspw. sieht der Index-Op.erator von std::map so aus, weil man mit ihm die entsprechenden Objekte unter den Schlüsseln auch schreiben kann. Daher liefert der Operator eine Referenz (quasi ein Pointer, aber ohne die ganzen fiesen Details, wie Null-Pointer etc.), statt einer Kopie. Das "void" in der Parameterliste ist veraltet und heute eher unüblich. Es zeigt eigentlich bloß eine leere Parameterliste an. Das geht besser und übersichtlicher, indem man es einfach weg lässt.

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

      das void hab ich zur verdeutlichung geschrieben, aber danke für die Antwort ergibt jetzt Sinn.

  • @quzedf
    @quzedf 6 років тому

    super video:)
    aber eine Frage habe ich:
    z.B. bei 9:05 sagst du Variable t
    Müsste es nicht heißen Objekt t?

    • @falscherkim3033
      @falscherkim3033 6 років тому

      Es ist eine Variable vom Typ "Test-Objekt" :)

  • @ore2ore2ore
    @ore2ore2ore 11 років тому

    Als javajaner musste ich feststellen, dass ich mich tatsächlich etwas schwer mit dem verstehen ref-by-value anstelle. Könntest du dazu noch 2 Worte mehr verlieren? Wofür bvenötige ich das, wie kann ich dann auf die neuen, kopierten Elemente zugreifen?

  • @Unaimend
    @Unaimend 10 років тому

    Das Video fehlt in der Playlist

    • @bytesnobjects
      @bytesnobjects  10 років тому +1

      Danke für den Hinweis. Ich hab jetzt all die anderen Videos auch nochmal durchgesehen und festgestellt, dass da noch mehr gefehlt haben. Jetzt sollte die Playlist hoffentlich vollständig sein.

    • @Unaimend
      @Unaimend 10 років тому

      Immer wieder gern