Zwei mal const?



  • Moins,

    bin gerade über folgendes Konstrukt gestolpert:

    void processingInstruction
        (
            const   XMLCh* const    target
            , const XMLCh* const    data
        );
    

    Ich frage mich, warum hier zwei mal "const" steht.
    Hat jemand ne Idee?

    Gruß,
    Peter



  • Das ist ein konstanter Zeiger auf ein konstantes Objekt vom Typ XMLCh.Dh sowohl der Zeiger als auch das Objekt auf das der Zeiger zeigt sind unveränderlich.



  • Mal eine schnelle Antwort von mir (haben hier schon Andere schöner beantwortet, finde ich aber gerade nicht):

    MyTyp t;       // (0) t kann verändert werden
    MyTyp const t; // (1) t kann nicht verändert werden
    const MyTyp t; // (1*) = (1)
    MyTyp*  t;     // (2) t zeigt auf ein MyTyp-Objekt; man kann sowohl das Objekt ändern als auch wechseln
    MyTyp const * t; // (3) t zeigt auf ein MyTyp-Objekt; man kann das Objekt wechseln, aber das Objekt, auf das t zeigt, nicht ändern
    const MyTyp * t; // (3* ) = (3)
    MyTyp * const  t; // (4) t zeigt auf ein MyTyp-Objekt; man kann das Objekt NICHT wechseln, aber das Objekt, auf das t zeigt, ändern
    MyTyp const * const  t; // (5) = (3) & (4): nicht wechseln, nicht ändern
    const MyTyp * const  t; // (5*) = (5)
    

    Gruß,

    Simon2.



  • Simon2 schrieb:

    Mal eine schnelle Antwort von mir (haben hier schon Andere schöner beantwortet, finde ich aber gerade nicht):

    Vor allem haben es andere teilweise auch mehrfach gepostet, weil sie ihren alten Post nicht auf die schnelle gefunden haben 😉

    Ergänzung um Referenzen:

    MyTyp const & t; // (6) t kann nicht verändert werden
    const MyTyp & t; // (6*) = (6)
    

    cu André



  • merci beaucoup euch allen 🙂


Anmelden zum Antworten