2017-06-26 3 views
-2

Warum kann Typ & nicht an einen const L-Wert binden? Ich verstehe, Typ & kann an L-Wert binden, ist aber const L-Wert ist nur eine unveränderliche Adresse eines Typs von Variablen? Meine zweite Frage ist, warum kann Typ & nicht an einen "ersetzbaren R-Wert" entweder binden? Deine Hilfe wird hoch geschätzt.Warum Typ & kann Const lvalue nicht binden

+0

Bitte Code anzeigen. Es klingt, als ob du fragst, warum ein const nicht von einer nicht-const referenziert werden kann. – wally

+0

Bitte beheben Sie das kaputte Englisch. Ich vermute, dass es dort eine klare Frage geben könnte. Aber zur Zeit kann ich es nicht entziffern. –

+0

Sie verstoßen gegen const-correctness, wenn Sie dies tun. Sie können einen Const-Namen nicht mit einem nicht-konstanten Namen versehen. So einfach ist das. – NathanOliver

Antwort

2

Warum kann Typ & nicht an const L-Wert binden?

Wenn es erlaubt ist, können Sie ein const Objekt ändern.

void foo(int& v) 
{ 
    v = 10; 
} 

int main() 
{ 
    const int i = 20; 
    int& ref = i; 
    foo(ref); // If the previous line were allowed, the value of i will be 10 after 
       // the function returns, which violates the const-ness of i 
} 
Verwandte Themen