Interne Arbeitsweise von Referenzen



  • Hallo,

    sind Referenzen für einen Compiler einfach nur ein anderer Name für ein Objekt oder tauchen im fertig compilierten Programm tatsächlich irgendwelche zeigeratigen Objekte auf (und die Vorteile von Referenzen wären in diesem Fall bloß die Konsistenzprüfungen zur Compilierzeit). Ich würde ja auf die erste Variante tippen, aber ich konnte nirgends etwas finden, das mir dies sicher bestätigt.



  • Das zweite natürlich.



  • Das erste natürlich.



  • Bashar schrieb:

    Das zweite natürlich.

    volkard schrieb:

    Das erste natürlich.

    😕 Genau das hatte ich befürchtet. 😕



  • Vielleicht beides?



  • Ich bilde mir ein, schon beide Varianten gelesen zu haben.
    Allerdings bin ich der Meinung, dass Variante 1 zutrifft.



  • xBlackKnightx schrieb:

    Vielleicht beides?

    Werden Zeigerobjekte angelegt oder nicht...



  • Wie würde volkards C++-Compiler wohl swap übersetzen?



  • Enduser schrieb:

    xBlackKnightx schrieb:

    Vielleicht beides?

    Werden Zeigerobjekte angelegt oder nicht...

    kommt drauf an wie der compiler das optimiert?



  • Wie würde Bashars C++-Compiler wohl

    int a=5;
    int& ra=a;
    

    übersetzen?

    und da haben wir schon den salat. der standard schreibt nicht vor, wie's innendrin aussieht.
    faktisch macht der compiler es manchmal so und manchmal so.
    die dokmatisten wie ich sagen "referenzen sind nur andere namen und dieses verhalten wird manchmal duch verkappte zeiger erzeugt". die anderen dokmatisten sagen "referenzen sind verkappte zeiger und manchmal werden sie wegoptimiert".



  • volkard schrieb:

    Wie würde Bashars C++-Compiler wohl

    int a=5;
    int& ra=a;
    

    übersetzen?

    Er würde erstmal einen Zeiger anlegen und bei der Optimierung feststellen, dass er überflüssig ist.

    Im Allgemeinen ist der Zeiger aber notwendig.

    Hätte da statt einer Referenz ein Zeiger gestanden, würde übrigens dasselbe passieren. Man bekommt bei einer Referenz nur bestimmte Eigenschaften ohne Analyse geschenkt, z.B. ob einer die Adresse nimmt.

    und da haben wir schon den salat. der standard schreibt nicht vor, wie's innendrin aussieht.

    Natürlich nicht. Als Frage zum Standard hab ich das aber auch nicht aufgefasst.



  • volkard schrieb:

    und da haben wir schon den salat. der standard schreibt nicht vor, wie's innendrin aussieht.
    faktisch macht der compiler es manchmal so und manchmal so.
    die dokmatisten wie ich sagen "referenzen sind nur andere namen und dieses verhalten wird manchmal duch verkappte zeiger erzeugt". die anderen dokmatisten sagen "referenzen sind verkappte zeiger und manchmal werden sie wegoptimiert".

    Danke für die Erklärung. Das hätte ich wirklich nicht gedacht. Gut, dass ich nochmal gefragt habe.



  • Ich bin ein Dokmatist.

    <Klugscheiss>Wenn, dann wohl eher ein Dogmatiker.</Klugscheiss>


  • Administrator

    @jencas,
    Volkard verarscht hier nur Prof84, welcher mit dem Dokmatist kam und noch ein paar wilde Behauptungen dazu 🙂
    Alles weitere dazu in NadrW, Thema: http://www.c-plusplus.net/forum/viewtopic-var-t-is-239999.html

    Grüssli


Log in to reply