tôi nghĩ tài liệu tham khảo chỉ kéo dài tuổi thọ của temporaries đến tuổi thọ của các tài liệu tham khảo chính nó, nhưng đầu ra của đoạn sau đây dường như mâu thuẫn:Thời gian tồn tại của đối số mặc định tạm thời bị ràng buộc với tham số tham chiếu là gì?
#include <iostream>
struct X{ ~X(){ std::cout << "Goodbye, cruel world!\n"; } };
X const& f(X const& x = X()){
std::cout << "Inside f()\n";
return x;
}
void g(X const& x){
std::cout << "Inside g()\n";
}
int main(){
g(f());
}
Live example. Output:
Inside f()
Inside g()
Goodbye, cruel world!
Vì vậy, có vẻ như các tạm thời bị phá hủy sau khi g()
được gọi là ... những gì cho?
Nó thường được coi là không thân thiện để không để lại một lời giải thích khi downvoting. – Xeo
Đoán của tôi là downvoter vô tình nhấn nút downvote khi họ thực sự có nghĩa là để nhấn nút upvote (nhìn vào tổng số phiếu cho câu trả lời của bạn và câu hỏi cũng hỗ trợ lý thuyết này). Nhưng ai biết được! –
@Jesse: Lý thuyết hay, nhưng câu trả lời có nhiều ý nghĩa hơn so với câu hỏi trước khi downvote xuất hiện. :) – Xeo