WinMaker (): _hwnd (0) {} ??



  • Hier ist eine Klassendefinition die ich in einem WinAPI Tutorial online gefunden habe:

    class WinMaker 
    { 
    public: 
        WinMaker (): _hwnd (0) {} 
        WinMaker (char const * caption, 
                  char const * className, 
                  HINSTANCE hInstance); 
        void Show (int cmdShow) 
        { 
            ::ShowWindow (_hwnd, cmdShow); 
            ::UpdateWindow (_hwnd); 
        } 
    protected: 
        HWND _hwnd; 
    };
    

    Mit der folgenden Zeile habe ich Problem, da ich die Syntax leider nicht verstehe... vielleicht kann mir wer auf die Sprünge helfen 🙂

    WinMaker (): _hwnd (0) {}
    


  • p.s.: Danke im Voraus! 🙂



  • da wird _hwnd mit 0 initialisiert.



  • Original erstellt von dEUs:
    da wird _hwnd mit 0 initialisiert.

    Danke, dass habe ich mir schon gedacht!
    Nur wie heisst so eine Initialisierung bei der die Variable quasi als Funktion mit aufgerufen wird um sich selbst zu initialisieren? 😕



  • Sowas nennt man eine Initialisierungsliste. Die macht man in dieser Form:

    Sei Klassenname der Name der Klasse:
    Klassenname(Konstruktorparameter) : var1(init1),var2(init2),var3(init3) { blablabla };

    Du hast also erstmal einen "normalen" Konstruktor. Wenn der nur aus Zeilen in der art Membervariable1 = blabla; Membervariable2 = blabla; besteht, dann sind Initalisieurngslisten schneller geschrieben udn sollen angeblich auhc schneller in der Ausführung sein. Du sparst dir damit also den Konstruktor, daher ist der Konstruktorkörper dann meistens leer ( {} ).



  • Hallo,
    schon mal einen Blick in die FAQs geworfen?
    Konstruktor & Initialisierung


Anmelden zum Antworten