2012-05-25 13 views
14

Studiuję 4. wydanie C++ Primer przez Stanley B. Lippman. W sekcji 12.4.1, podczas rozmowy autorem około inicjalizatorów konstruktora, daje ten przykład:Czy ten inicjator konstruktora powoduje zwisające odwołanie?

class ConstRef { 
    public: 
    ConstRef(int ii); 
    private: 
    int i; 
    const int ci; 
    int &ri; 
}; 
// OK: explicitly initialize reference and const members. 
ConstRef::ConstRef(int ii): i(ii), ci(i), ri(ii) { } 

Podejrzewam, że może to spowodować dangling odniesienia ri wskazując na ii, który jest tymczasowy. Czy mam rację?

+16

szczęk ++ jest realne pomocne: 'ostrzeżenie: wiązanie członek odniesienia„ri”stos przydzielone parametru„II”[-Wdangling-field]' – Mat

+0

Po google wokół, aby zobaczyć, jak to jest, że wygląda o wadzie naprawdę świetnie. – chanp

Odpowiedz

13

Też tak myślę. Spróbuj tego

ConstRef::ConstRef(int ii): i(ii), ci(i), ri(i) { } 
+0

Dzięki za szybką odpowiedź! Więc jestem teraz bardziej pewny :) – chanp

Powiązane problemy