2012-05-25 2 views
14

Я изучаю C++ Primer 4-е издание Стэнли Б. Липпмана. В разделе 12.4.1, когда автор говорит о конструкторах инициализаторах, он дает этот пример:Является ли этот инициализатор конструктора причиной свисающей ссылки?

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

Я подозреваю, что это может привести к оборванной ссылке ri указывающего на ii, который является временнымами. Я прав?

+16

лязг ++ реально полезно: 'предупреждение: обязательный контрольный элемент«п»в стек выделяется параметр«II»[-Wdangling поля]' – Mat

+0

После гугле вокруг, чтобы увидеть, что это такое, как выглядит отчет об ошибке действительно здорово. – chanp

ответ

13

думаю тоже. Попробуйте

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

Спасибо за быстрый ответ! Так что теперь я более уверен :) – chanp

Смежные вопросы