[Erledigt] C++ Referenz erzwingen



  • Weil google nach "Funktion const" wirklich sowas von einfach ist, und auch als erstes Ergebnis eine passende Antwort geliefert hätte. Außerdem sollte das in jedem halbwegs guten Buch erwähnt werden.
    Du kannst auch mal nach "const correctness C++" googlen, falls es dir nur darum geht, für was das gut sein soll.



  • franz schrieb:

    Weil google nach "Funktion const"

    Stimmt nicht! Wieso behauptest du so einen Usinn.
    Der erste Treffer ist: http://www.vbarchiv.net/api/api_enumprinters.html
    Hat absolut nichts mit C++ zu tun.

    franz schrieb:

    Außerdem sollte das in jedem halbwegs guten Buch erwähnt werden.

    Stimmt auch nicht, ich habe zwei Bücher aus der Empfehlungsliste und in keinem stand es erklärt ob man sich das const hinten sparen kann. Hauptsache sinnlos geflamed.

    franz schrieb:

    Du kannst auch mal nach "const correctness C++" googlen, falls es dir nur darum geht, für was das gut sein soll.

    Den Begriff "const correctness C++" muss man nicht kennen, es hätte gelangt mir den Begriff zu nennen.



  • darkfate schrieb:

    Wie kommst du jetzt da drauf? Hast du dafür einen Beleg

    Wenn ich nach "c++ const method" google, finde ich die Antworten auf Deine Fragen. Ich gehe davon aus, dass Dir "Google" ein Begriff bist. => Du warst zu faul zum Googeln => Null Eigeninitiative.

    darkfate schrieb:

    oder willst du einfach nur wieder aus deiner Frustration heraus flamen?

    Wieder? Wenn Du wirklich an einer ehrlichen Antwort zu dieser Frage interessiert bist, kann ich sie Dir geben: Ich mag diese "Was ist 1+1?"-Fragen nicht. Auf so etwas zu antworten ist IMHO Verschwendung von Hilfbereitschaft. Wenn das, was Du schreibst, den Eindruck erweckt, als wärst Du zu faul die Antwort selbst zu suchen, musst Du mit UTFG-Antworten rechnen. Ganz einfach.



  • darkfate schrieb:

    franz schrieb:

    Weil google nach "Funktion const"

    Stimmt nicht! Wieso behauptest du so einen Usinn.
    Der erste Treffer ist: http://www.vbarchiv.net/api/api_enumprinters.html
    Hat absolut nichts mit C++ zu tun.

    Dann google mal nach Hyperbel :p

    darkfate schrieb:

    franz schrieb:

    Außerdem sollte das in jedem halbwegs guten Buch erwähnt werden.

    Stimmt auch nicht, ich habe zwei Bücher aus der Empfehlungsliste und in keinem stand es erklärt ob man sich das const hinten sparen kann. Hauptsache sinnlos geflamed.

    "Ob man sich das const sparen kann" ergibt sich aus der Erklärung für das const, was in jedem guten Buch drin stehen sollte. Mach nur weiter so.



  • darkfate schrieb:

    franz schrieb:

    Außerdem sollte das in jedem halbwegs guten Buch erwähnt werden.

    Stimmt auch nicht, ich habe zwei Bücher aus der Empfehlungsliste und in keinem stand es erklärt ob man sich das const hinten sparen kann. Hauptsache sinnlos geflamed.

    Weil die Autoren vielleicht denken, dass es reicht, wenn sie die Aufgabe des const hinter Funktionen erklären, und du dieses Konzept dann selbst anwenden kannst. Offenbar hätte da aber explizit stehen müssen: "Man kann sich das const in dem und dem Fall sparen", damit du was damit anfangen kannst. 🙄



  • darkfate schrieb:

    franz schrieb:

    Weil google nach "Funktion const"

    Stimmt nicht! Wieso behauptest du so einen Usinn.
    Der erste Treffer ist: http://www.vbarchiv.net/api/api_enumprinters.html
    Hat absolut nichts mit C++ zu tun.

    Dann entschuldige ich mich vielmals und behaupte das Gegenteil...
    Nö, mal im Ernst, wenn du schon im englischen google suchst, darfst du ruhig deine Anfrage auf Englisch formulieren (siehe krümelkacker). Im deutschen google (google.de) kriegt man tatsächlich einen wunderbaren Hinweis:
    http://www.wachtler.de/cpp/node51.html

    franz schrieb:

    Außerdem sollte das in jedem halbwegs guten Buch erwähnt werden.

    Stimmt auch nicht, ich habe zwei Bücher aus der Empfehlungsliste und in keinem stand es erklärt ob man sich das const hinten sparen kann. Hauptsache sinnlos geflamed.

    Danke, ebenso...
    Dann schau dich nach einem besseren Buch um. Welches ist es denn?

    franz schrieb:

    Du kannst auch mal nach "const correctness C++" googlen, falls es dir nur darum geht, für was das gut sein soll.

    Den Begriff "const correctness C++" muss man nicht kennen, es hätte gelangt mir den Begriff zu nennen.

    Du solltest jetzt genug Hinweise erhalten haben, wie du an die entsprechende Info gelangst. Wieso unnötigerweise Information verdoppeln, wenn es eh schon (eigentlich genügend oft) erklärt wurde?



  • darkfate schrieb:

    franz schrieb:

    Weil google nach "Funktion const"

    Stimmt nicht! Wieso behauptest du so einen Usinn.
    Der erste Treffer ist: http://www.vbarchiv.net/api/api_enumprinters.html
    Hat absolut nichts mit C++ zu tun.

    Dann spendier der Suchanfrage noch ein "C++" und du hast was du suchst. Erster link ganz unten, dritter link sagt auch alles...

    darkfate schrieb:

    franz schrieb:

    Außerdem sollte das in jedem halbwegs guten Buch erwähnt werden.

    Stimmt auch nicht, ich habe zwei Bücher aus der Empfehlungsliste und in keinem stand es erklärt ob man sich das const hinten sparen kann.

    Welche Bücher sind das? wenn das wirklich nicht erwähnt ist dann sollten sie aus der Liste rausgenommen werden. Franz' Aussage stimmt sehr wohl, mit Betonung auf "halbwegs gut".

    Und jetzt möchte ich alle hier bitten während der nächsten Posts drauf zu achten, dass der Ton nicht wieder völlig aus dem Ruder läuft. Das passiert hier leider viel zu oft in letzter Zeit.



  • krümelkacker schrieb:

    Wenn ich nach "c++ const method" google, finde ich die Antworten auf Deine Fragen. Ich gehe davon aus, dass Dir "Google" ein Begriff bist. => Du warst zu faul zum Googeln => Null Eigeninitiative.

    Wenn du weißst wonach du suchen musst, ist es einfach. Die Begriffe die mir eingefallen sind, haben bisher nichts hergegeben. Auch nicht das angebliche "const correctness c++" das hier gefallen ist.

    Beide Bücher geben nichts her, habe eben nochmal die Kapitel durchgelesen.
    Das nennst du Null Eigeninitiative?

    darkfate schrieb:

    Wieder? Wenn Du wirklich an einer ehrlichen Antwort zu dieser Frage interessiert bist, kann ich sie Dir geben: Ich mag diese "Was ist 1+1?"-Fragen nicht.

    Dann melde dich einfach nicht. Du musst doch nicht bei jeder Frage die dir nicht passt anfangen zu weinen?

    darkfate schrieb:

    Auf so etwas zu antworten ist IMHO Verschwendung von Hilfbereitschaft.

    Also wenn deine Beiträge nicht aufopfernde Hilfsbereitschaft ist...

    darkfate schrieb:

    Wenn das, was Du schreibst, den Eindruck erweckt, als wärst Du zu faul die Antwort selbst zu suchen, musst Du mit UTFG-Antworten rechnen. Ganz einfach.

    Sag mal muss ich jetzt vor jeder Frage die Quellen angeben wo ich bereits gesucht habe?



  • darkfate schrieb:

    Beide Bücher geben nichts her, habe eben nochmal die Kapitel durchgelesen.

    Welche Bücher sind das?

    Die Begriffe die mir eingefallen sind, haben bisher nichts hergegeben. Auch nicht das angebliche "const correctness c++" das hier gefallen ist.

    Mal sehen. Erster Link: http://www.parashift.com/c++-faq-lite/const-correctness.html. Punkt [18.10] What is a "const member function"?. Erster Treffer.

    Zweiter Link der Google-Suche: http://en.wikipedia.org/wiki/Const-correctness. Abschnitt 1.3 Methods.



  • darkfate schrieb:

    Wenn du weißst wonach du suchen musst, ist es einfach. Die Begriffe die mir eingefallen sind, haben bisher nichts hergegeben. Auch nicht das angebliche "const correctness c++" das hier gefallen ist.

    C++ FAQ Lite, dort unter Punkt 18 Const Correctness schauen (Bei google ist das aktuell bei mir sogar der erste Treffer).

    Diese C++ FAQ ist durchaus in vielen Punkten eine gute Anlaufstelle für erste Fragen (Da viele darin auch schon beantwortet werden). Anschließend kannst du gerne detaillierte Fragen stellen.

    darkfate schrieb:

    Beide Bücher geben nichts her,...

    Und nochmals: WELCHE Bücher?

    darkfate schrieb:

    Dann melde dich einfach nicht. Du musst doch nicht bei jeder Frage die dir nicht passt anfangen zu weinen?

    Freundlichkeit ist aber auch nicht deine Stärke, oder?

    Davon abgesehen macht es wenig Sinn alles aufs neue wiederholen zu müssen, wenn es bereits an anderer Stelle gut erklärt ist.



  • asc schrieb:

    Die Begriffe die mir eingefallen sind,
    haben bisher nichts hergegeben. Auch nicht das
    angebliche "const correctness c++" das hier gefallen ist.

    Zum x-ten mal:

    Der Begriff ist erst nach dem Flame von Krümmelkacker gefallen.

    Nachdem ich diesen Begriff bekommen habe,
    Bin ich zurechtgekommen, zumindest teilweise.

    darkfate schrieb:

    Beide Bücher geben nichts her,...

    Ich glaube das muss ich jetzt zurückziehen...
    Wenn das stimmt dass const in:

    typ get_value() const;
    

    Sich nur auf den this-> Pointer bezieht,
    dann habe ich darauf nicht geachtet. Mein Fehler.
    Wahrscheinlich ist es in einer Formulierung drin...

    asc schrieb:

    Freundlichkeit ist aber auch nicht deine Stärke, oder?

    Hast recht. Ich bin fast unverschämt.
    Es frustriert mich einfach wenn Leute einfach
    aus dem nichts heraus behaupten dass ich nichts
    tue/nicht suche/ nicht versuche das Problem
    selber zu lösen. Es ist einfach unangenehm...
    und schlichtweg unwahr.

    asc schrieb:

    Davon abgesehen macht es wenig Sinn
    alles aufs neue wiederholen zu müssen, wenn es
    bereits an anderer Stelle gut erklärt ist.

    Sehe ich absolut ein.
    Wie gesagt: Der Begriff "const correctness c++" wäre
    mir auf anhieb aber nicht eingefallen. Woher denn auch?
    Bevor der Begriff gefallen ist, hat Krümmelkacker
    schon angefangen zu flamen.

    Nachtrag:
    Es ist schön das alle jetzt mit dem
    Suchbegriff "const correctness c++" kommen.
    Es war auch der richtige Tipp.

    Schaut euch den Anfang des Threads an,
    der Begriff kam erst nach dem Flamen.



  • Hoi,...

    schon mal mit

    void function ( double & referenz)
    { referenz=get_double(); return;}
    
    //oder
    void function ( double * pointer)
    { *pointer=get_double(); return;}
    

    probiert ??

    Der stack von function wird ja wieder frei geräumt (je nach call convention...)

    grüüße



  • Michael E. schrieb:

    http://www.parashift.com/c++-faq-lite/const-correctness.html

    Auf dieser Seite war ich schon heute schon mehrmals. Hier ist es grausam in der Formulierung versteckt. Wenn man vorher nicht wusste dass es sich nur auf den this Pointer bezieht, wird man diese Information in diesem Link nie herausholen können.

    Michael E. schrieb:

    Zweiter Link der Google-Suche: http://en.wikipedia.org/wiki/Const-correctness. Abschnitt 1.3 Methods.

    Dieser Link ist weitaus besser und ohne Umwege formuliert.

    Danke für deine Hilfe.



  • zeusosc schrieb:

    ...
    Der stack von function wird ja wieder frei geräumt (je nach call convention...)

    Hallo Zeusosc, ich kann es gerade nicht einordnen. In wiefern sollte es mir nun mit const memberfunktionen helfen?



  • zeusosc schrieb:

    schon mal mit

    void function ( double & referenz)
    { referenz=get_double(); return;}
    
    //oder
    void function ( double * pointer)
    { *pointer=get_double(); return;}
    

    probiert ??

    Der stack von function wird ja wieder frei geräumt (je nach call convention...)

    Das Beispiel ergibt für mich nicht viel Sinn 😃
    Hier werden keine Referenzen zugewiesen sondern Values. In 1) wird ein bereits exisztierendes Objekt per Referenz an function übergeben, dort wird referenz ein neuer Wert zugewiesen, welcher aus get_double zurückgegeben wurde. Dabei ist es egal, ob dies jetzt per Referenz oder value passiert.
    Selbes gilt übrigens auch für den zweiten Aufruf, nur halt mit Pointern.

    BTW. ist ein "return;" in einer void-Funktion total unnötig, vor allem wenn man eh schon am Ende ist 😃



  • Jo,

    die Anforderung war speicher zu sparen.
    Mit der Annahme das der Aufruf "get_double()" nicht geändert werden kann, gibt es die möglichkeit die Lebenszeit eines im Stack allocierten Types möglichst kurz zu halten. Halt ne psuedo referenz,..

    habe ja nicht gesagt das es sinnig sei 😃



  • darkfate schrieb:

    ...

    Etwas ganz anderes: Breche deine Sätze bitte nicht händisch mit return um, das macht das Forum automatisch am Seitenrand (Und je nach dem wie breit die Seite konkret ist).

    darkfate schrieb:

    Wenn das stimmt dass const in:

    typ get_value() const;
    

    Sich nur auf den this-> Pointer bezieht,...

    this-> Pointer halte ich aber für eine unglücklichere Formulierung als aktuelle Instanz. Ein const am Ende einer Methode besagt, das die Methode den Objektzustand nicht ändert.

    Etwas anderes, wegen dem "die Anforderung war speicher zu sparen." (Ich hatte vorher schon einen Post angefangen, diesen aber scheinbar nicht abgeschickt).

    Auch wenn man Performance nicht gänzlich außer acht lassen sollte, gibt es den schönen (und meiner Meinung sehr passenden Spruch): "premature optimization is the root of all evil". Man sollte nicht um biegen und brechen im Vorfeld versuchen zu optimieren (natürlich sollte man auch nicht bewusst Performancebremsen einbauen) - in 90% der Fälle wird es nicht an der von dir prognostizierten Stelle wirklich eine Verbesserung des Speicher- oder Performanceverhalten geben.

    Um noch genauer zu werden: Viele Compiler werden Temporäre Variablen von Rückgabewerten, wenn möglich, ohnehin wegoptimieren. Im Kommenden Standard wird das ganze noch durch rvalue-Referenzen unterstützt.

    Das beste ist erst einmal sauberen Code zu erzeugen, und dann zu prüfen wo die Performanceengpässe wirklich sind (mit Hilfe eines Profilers), und dann auch nach Möglichkeit nur diese Stellen anzupassen.



  • asc schrieb:

    this-> Pointer halte ich aber für eine unglücklichere Formulierung als aktuelle Instanz. Ein const am Ende einer Methode besagt, das die Methode den Objektzustand nicht ändert.

    Der this pointer bezieht sich doch auf das aktuelle ganze objekt?



  • darkfate schrieb:

    Der this pointer bezieht sich doch auf das aktuelle ganze objekt?

    Ja, aber Objekt oder Instanz sind wohl verbreitetere Bezeichnungen (Ich kenne sogar einen Entwickler der als er this-> das erste mal im Code gesehen hatte, nachfragen musste, wo Dieser herkommt).


Anmelden zum Antworten