Trong một thời gian, điều này làm tôi bối rối. Và tôi đã không thể tìm thấy một câu trả lời thỏa đáng cho đến nay. Câu hỏi rất đơn giản. Khi nào thì move assignment operator
được gọi và khi nào thì gọi số move constructor operator
?Sự khác biệt giữa toán tử gán chuyển và di chuyển hàm tạo?
Các ví dụ mã trên cppreference.com mang lại kết quả thú vị sau:
a2 = std::move(a1); // move-assignment from xvalue
A a2 = std::move(a1); // move-construct from xvalue
Vì vậy, đã nó làm gì để có được thực hiện? Và nếu như vậy được thực hiện nếu cả hai được thực hiện? Và tại sao có khả năng tạo ra một toán tử chuyển nhượng quá tải ở tất cả, nếu nó giống hệt nhau.
"lập luận chức năng đi qua" là một trường hợp đặc biệt của "khởi tạo" và tôi không chắc chắn ý của bạn là "trả về hàm". –
'return a;' không phải là mote-assignment –
@ M.M: hãy giúp tôi hiểu điều này khi in ra 6 (từ bên trong fun() khai báo) là toán tử gán di chuyển được gọi. – novieq