2012-05-25 39 views
14

Tôi đang học ấn bản C++ Primer thứ 4 của Stanley B. Lippman. Trong phần 12.4.1, khi các cuộc đàm phán tác giả về initializers constructor, ông cho ví dụ này:Trình khởi tạo hàm khởi tạo này có gây ra tham chiếu lơ lửng không?

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

Tôi nghi ngờ rằng điều này có thể gây ra một tài liệu tham khảo tòn ten ri trỏ đến ii, mà là một tạm thời. Tôi có đúng không?

+16

++ là có thật hữu ích: 'cảnh báo: ràng buộc thành viên tham khảo 'ri' để stack giao tham số 'ii' [-Wdangling-field]' – Mat

+0

Có googled xung quanh để xem nó như thế nào, ngoại hình báo cáo lỗi thực sự tuyệt vời. – chanp

Trả lời

13

Tôi cũng nghĩ vậy. Hãy thử kêu vang này

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

Cảm ơn bạn đã trả lời nhanh! Vì vậy, tôi chắc chắn hơn bây giờ :) – chanp

Các vấn đề liên quan