này kết quả đầu ra F~
nhưng tôi đã mong ~F
KHÔNG phải là const quan trọng nhất .. nhưng đây là gì?
#include <iostream>
struct Foo {
int _x;
operator const int &() const {return _x;}
~ Foo() {std :: cout << "~";}
};
void foo (const int &)
{
std :: cout << "F";
}
int main()
{
foo (Foo());
}
tôi xây dựng này như một phản ví dụ để chứng minh rằng hầu hết quan trọng const là một ngoại lệ chứ không phải là một quy tắc. Nó thường được viết dưới dạng
khi một tham chiếu const liên kết với một tạm thời, sau đó cuộc đời của đó tạm thời được mở rộng đến tuổi thọ của các tài liệu tham khảo
Tôi đã cố gắng để minh họa rằng, mặc dù Foo()
là tạm thời, tham chiếu đến _x
được toán tử chuyển đổi trả về và mã ở trên không an toàn.
Nhưng đầu ra dường như chứng minh rằng ví dụ là an toàn, tuổi thọ của tạm thời Foo()
được mở rộng bởi sự tồn tại của tham chiếu const cho một trong các thành viên của nó.
Điều này có đúng không? Tiêu chuẩn này được chỉ định ở đâu?
Trở tài liệu tham khảo là thường xuyên hơn một ý tưởng tồi hơn một tốt nhất. Đây là một ví dụ điển hình về điều này. –
@ R.MartinhoFernandes Vì vậy, bạn khai báo 'toán tử []' là ...? – curiousguy