Paramenter call-by-val und "const"



  • Hallo

    1. Fragr:

    Habe eine funktion:

    void func(const int& i){
    
      int h= i;
    .
    .
    .
    
    }
    

    dann kann ich die funktion ja

    func(1);
    int k=6;
    func(k);
    

    aufrufen

    so, würde ich den parameter definition in der funktion ohne "const" machen, könnte ich ja func(1); nicht mehr aufrufen...

    was macht der compiler da?

    2. Frage:

    class Master{
    
    const int m_iMaster;
    public:
    
    .
    .
    inline const int& Get(){ return m_iMaster; }
    };
    

    die function der Klasse Get gibt eine refenrzen des variabel m_iMaster zurück.
    Aber wieso geht sowas :

    Master o;
    
    int h= o.Get();
    

    ein Konstanten wert als referenz auf eine NICHT Konstante??



  • Manchmal formulierst Du komisch 😉

    BorisDieKlinge schrieb:

    so, würde ich den parameter definition in der funktion ohne "const" machen, könnte ich ja func(1); nicht mehr aufrufen...

    was macht der compiler da?

    Vermutlich feststellen, dass "1" vom Typ const int ist, weiters dass die Funktion eine Referenz auf ein non-const int erwartet, und daraufhin eine Fehlermeldung werfen.

    die function der Klasse Get gibt eine refenrzen des variabel m_iMaster zurück.
    Aber wieso geht sowas :

    Master o;
    
    int h= o.Get();
    

    ein Konstanten wert als referenz auf eine NICHT Konstante??

    Du legst hier nichts weiter als eine Kopie des konstanten Wertes an.



  • zu 2. ah stimmt..

    meinte das
    sowas

    int &h= o.Get();
    

    nich gehen würde...


Anmelden zum Antworten