Trong các lớp học của tôi, tôi sử dụng std::vector
v.v ... như các biến thành viên, đi kèm với các nhà xây dựng di chuyển của riêng họ. Tôi không khai báo một cách rõ ràng các hàm khởi tạo cho các lớp của tôi và chúng không được khai báo ngầm cho hầu hết các phần.Biến thành viên trong các đối tượng tạm thời có được di chuyển hoàn toàn khi có thể không?
Nếu trình tạo bản sao ngầm định hoặc toán tử gán ngầm của lớp của tôi được gọi với giá trị rvalue, các thành viên đã di chuyển sao chép hoặc di chuyển chưa?
Nếu chúng được di chuyển, có bất kỳ lý do gì để cố gắng tránh các thời gian tạm thời khi sử dụng các lớp học với các thành viên có khả năng di chuyển không?
Nếu sử dụng C++ 11, chúng sẽ được di chuyển, nếu C++ 03 chúng sẽ được sao chép. Từ C++ 11, tất cả các lớp chứa thư viện chuẩn sẽ tận dụng các ngữ nghĩa di chuyển. –
Nhưng điều này sẽ không phải là trường hợp nếu tôi tuyên bố rõ ràng một nhà xây dựng sao chép phải không? Theo như tôi biết, việc gắn một tham chiếu const vào một giá trị và sau đó gán nội dung sẽ không cho phép các toán tử gán di chuyển của các thành viên được sử dụng. – gokturk
_ "chúng không được khai báo hoàn toàn cho phần lớn." _ Thì kiểu của bạn không có ngữ nghĩa di chuyển, vì vậy không có cách nào cho các thành viên được di chuyển –