2011-07-26 34 views

Trả lời

30

http://www.justsoftwaresolutions.co.uk/cplusplus/rvalue_references_and_perfect_forwarding.html

Tại sao điều này hữu ích? Vâng, nó có nghĩa là một mẫu chức năng có thể chuyển các đối số của nó thông qua một hàm khác trong khi giữ lại bản chất lvalue/rvalue của các đối số hàm bằng cách sử dụng std :: forward. Điều này được gọi là "chuyển tiếp hoàn hảo", tránh sao chép quá mức và tránh tác giả của mẫu phải viết nhiều quá tải cho các tham chiếu giá trị và giá trị rvalue.

+5

Bạn đánh bại tôi với nó :) –

+3

Trả lời các bài viết được đánh dấu của một người. ;) –

+1

đó là một bài viết tuyệt vời, cảm ơn bạn. –

6

Trích dẫn Session Announcement: Adventures in Perfect Forwarding:

Hoàn thiện chuyển tiếp là một quan trọng C++ 0x kỹ thuật xây dựng trên đỉnh tài liệu tham khảo rvalue. Nó cho phép di chuyển ngữ nghĩa được tự động áp dụng , ngay cả khi nguồn và đích di chuyển là được phân tách bằng các cuộc gọi chức năng can thiệp. Các ví dụ phổ biến bao gồm hàm tạo và hàm setter chuyển tiếp các đối số mà chúng nhận được đến các thành viên dữ liệu của lớp mà chúng đang khởi tạo hoặc thiết lập, như cũng như các hàm thư viện chuẩn như make_shared, mà đối số của nó là của bất kỳ đối tượng nào đối tượng shared_ptr được tạo sẽ trỏ đến.

+1

Các liên kết bạn cung cấp trong câu trả lời này không còn tồn tại ... – TheCrafter

+0

Chỉ cần đến xung quanh đây. Có lẽ điều này tiết kiệm một chút thời gian. https://cppandbeyond.wordpress.com/2011/04/25/session-announcement-adventures-in-perfect-forwarding/ – rfx

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