Tôi muốn kiểm tra sự hiểu biết và kết luận của tôi về vấn đề này.Tôi có quyền nói rằng const_cast theo sau bởi sửa đổi trên một ref-to-const ràng buộc với một tạm thời là okay?
On IRC, nó đã được hỏi:
Có thể chấp nhận để
const_cast
một tham chiếuconst
đó là ràng buộc với một đối tượng tạm thời?
Dịch: ông có một ref-to-const ràng buộc với một tạm thời, và ông muốn bỏ đi const
-ness của nó để sửa đổi nó.
Câu trả lời của tôi là tôi đã hỏi a similar question trước đây, nơi mà sự đồng thuận dường như là bản thân thời gian không vốn là const
và do đó bạn có thể bỏ số tham chiếu bạn có cho họ và sửa đổi thông qua kết quả. Và, miễn là bản gốc ref-to-const
vẫn tồn tại, điều này sẽ không ảnh hưởng đến tuổi thọ của tạm thời.
Đó là:
int main()
{
const int& x = int(3);
int& y = const_cast<int&>(x);
y = 4;
cout << x;
}
// Output: 4
//^Legal and safe
Tôi có phải không?
(Tất nhiên, có hoặc không mã như vậy là thực sự nên là một vấn đề hoàn toàn khác!)
@Mark: Ồ, một chữ có thể là một lựa chọn tồi. Bây giờ tôi đã làm cho nó không có nghĩa đen cho câu hỏi này. –
Tôi sắp sửa nói rằng không có thời gian trong mã đó. May mắn thay, tôi làm mới trang trước khi làm điều đó :) – Gorpik
afaik (nhưng tôi không thể tìm thấy nó trong stadnard) nó nói một cái gì đó như "khi nó được khai báo là const, sau đó bạn có thể không đúc constness đi" ... vì vậy câu hỏi là , là một chữ được khai báo là const? Tôi không nghĩ như vậy, vì nó kết quả trong một đối tượng tạm thời, như vậy là tuyên bố như const? Tôi không có ý tưởng, nhưng ruột của tôi nói: không có – PlasmaHH