Klassen Konstruktor Pointer



  • oder du schreibst

    this->x = x;
    

    . 😉



  • Travor schrieb:

    oder du schreibst

    this->x = x;
    

    . 😉

    wow, cool! 🙂 Funzt!



  • cooky451 schrieb:

    Normalerweise hat man bei privaten Membervariablen irgendein pre-/postfix.

    class A
    {
      int x_, y_;
    // ...
    };
    

    In der Initialisierungsliste kann der Compiler das übrigens auflösen, aber danach wirds schwer. 😉

    Gibt es nicht die Regel, dass Variabeln, die mit '_' beginnen oder enden fuer den Compiler reserviert sind? Oder habe ich das gerade falsch im Kopf?



  • icarus2 schrieb:

    Gibt es nicht die Regel, dass Variabeln, die mit '_' beginnen oder enden fuer den Compiler reserviert sind? Oder habe ich das gerade falsch im Kopf?

    n3242 17.6.4.3.2 Global names schrieb:

    Certain sets of names and function signatures are always reserved to the implementation:
    — Each name that contains a double underscore _ _ or begins with an underscore followed by an uppercase letter (2.12) is reserved to the implementation for any use.
    — Each name that begins with an underscore is reserved to the implementation for use as a name in the global namespace.

    Deswegen enden die Namen da ja auch mit einem _. 😉



  • cooky451 schrieb:

    icarus2 schrieb:

    Gibt es nicht die Regel, dass Variabeln, die mit '_' beginnen oder enden fuer den Compiler reserviert sind? Oder habe ich das gerade falsch im Kopf?

    n3242 17.6.4.3.2 Global names schrieb:

    Certain sets of names and function signatures are always reserved to the implementation:
    — Each name that contains a double underscore _ _ or begins with an underscore followed by an uppercase letter (2.12) is reserved to the implementation for any use.
    — Each name that begins with an underscore is reserved to the implementation for use as a name in the global namespace.

    Deswegen enden die Namen da ja auch mit einem _. 😉

    Diese Regel sollte ich mir nun langsam aber sich einmal merken 🙄
    Ich vergesse immer, dass Namen, die mit '_' enden nicht reserviert sind.
    Danke.



  • — Each name that begins with an underscore is reserved to the implementation for use as a name in the global namespace.

    Da Membervariablen nicht global sind, dürfen diese sogar mit einem Unterstrich anfangen - vorausgesetzt, das zweite Zeichen ist kein weiterer Unterstrich oder Großbuchstabe.



  • Unterstriche sind toll. Ich würde folgendes vorschlagen.

    class c_
    {
      int v_;
      int v__;
      float v___;
      string v____;
    };
    


  • proUntersreicher schrieb:

    Unterstriche sind toll. Ich würde folgendes vorschlagen.

    class c_
    {
      int v_;
      int v__;
      float v___;
      string v____;
    };
    

    Hui, wäre heute der 1.April, könnte man glatt meinen, das sei ein Scherz...



  • Unterstriche sind toll... braucht man unbedingt für einen obfuscated C++ contest.



  • Ich benutze den Namen "_" gerne als Variablennamen für Scope-Locks, z.B.:

    void foo()
    {
        std::scoped_lock _(mtx);
    }
    


  • proUntersreicher schrieb:

    Unterstriche sind toll. Ich würde folgendes vorschlagen.

    class c_
    {
      int v_;
      int v__; // meep
      float v___; // meep
      string v____; // meep
    };
    

    Each name that contains a double underscore _ _ [...] is reserved to the implementation for any use.



  • cooky451 schrieb:

    Normalerweise hat man bei privaten Membervariablen irgendein pre-/postfix.

    Kannst du erklären, was du unter "normalerweise" verstehst und die Behauptung dann belegen? 😉 Es gibt vermutlich ähnlich viele Style-Guides, die Prä-/Postfixe propagieren, wie es auch Style-Guides gibt, die derart schmückendes Beiwerk verabscheuen, weil es die Lesbarkeit herabsetzt.


Anmelden zum Antworten