2012-05-25 14 views
14

Estoy estudiando la cuarta edición de C++ Primer por Stanley B. Lippman. En la sección 12.4.1, cuando el autor habla de inicializadores del constructor, que le da a este ejemplo:¿Este inicializador de constructor causa una referencia colgante?

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) { } 

Sospecho que esto puede causar un colgante de referencia ri apuntando a ii, que es un temporal. ¿Estoy en lo cierto?

+16

sonido metálico ++ es real útil: 'advertencia: la unión miembro de referencia 'ri' a pila asignado parámetro 'II' [-campo -Wdangling]' – Mat

+0

Habiendo googled alrededor para ver lo que se siente, las miradas de informes de error realmente grandioso. – chanp

Respuesta

13

Creo que también. Prueba este

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

¡Gracias por la respuesta rápida! Así que estoy más seguro ahora :) – chanp

Cuestiones relacionadas