Trích dẫn
Trích dẫn có thể xem thành là C++ phong trang kim đồng hồ, dùng để truyền lại nó sở chỉ hướng đối tượng. Ở C++ số hiệu trung trên thực tế sẽ thường xuyên cùng trích dẫn giao tiếp, nhưng là thông thường sẽ không hiện thức mà biểu hiện ra tới. Trích dẫn cơ bản nguyên tắc là ở thanh minh khi cần thiết chỉ hướng đối tượng, cùng với đối trích dẫn hết thảy thao tác đều tương đương với đối nguyên đối tượng thao tác. Mặt khác, trích dẫn không phải đối tượng, bởi vậy không tồn tại trích dẫn số tổ, vô pháp thu hoạch trích dẫn kim đồng hồ, cũng không tồn tại trích dẫn trích dẫn.
Chú ý trích dẫn loại hình không thuộc về đối tượng loại hình, cho nên mới yêu cầu
reference_wrapper
Loại này phương tiện.
Trích dẫn chủ yếu chia làm hai loại, tả giá trị trích dẫn cùng hữu giá trị trích dẫn. Ngoài ra còn có hai loại đặc thù trích dẫn: Chuyển phát trích dẫn cùng rũ huyền trích dẫn, không làm kỹ càng tỉ mỉ giới thiệu. Mặt khác, bổn văn còn liên lụy tới một bộ phận thường giá trị nội dung, thỉnh dùngThường giá trịMột văn phụ trợ đọc.
Tả giá trị trích dẫn
Tả giá trị cùng hữu giá trị
Nếu ngươi không biết cái gì là tả giá trị cùng hữu giá trị, có thể tham khảoGiá trị phân loạiGiao diện.
Tả giá trị biểu đạt thức
Nếu một cái biểu đạt thức phản hồi chính là tả giá trị, như vậy cái này biểu đạt thức được xưng là tả giá trị biểu đạt thức. Hữu giá trị biểu đạt thức cũng thế.
Thông thường chúng ta sẽ tiếp xúc đến trích dẫn vì tả giá trị trích dẫn, tức trói định đến tả giá trị trích dẫn, nhưngconst
Tả giá trị trích dẫn có thể trói định đến hữu giá trị. Dưới là đến từTham khảo sổ tayMột đoạn thí dụ mẫu số hiệu.
1 2 3 4 5 6 7 8 9 10 11 12 |
|
Tả giá trị trích dẫn nhất thường dùng địa phương là hàm số tham số, thông qua tả giá trị trích dẫn truyền tham có thể khởi đến cùng thông qua kim đồng hồ truyền tham tương đồng hiệu quả.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
Hữu giá trị trích dẫn (C++ 11)
Hữu giá trị trích dẫn là trói định đến hữu giá trị trích dẫn. Hữu giá trịCó thể ở bên trong tồn cũng có thể ở CPU gởi lại khí trung.Mặt khác, hữu giá trị trích dẫn có thể bị coi như một loạiKéo dài lâm thời đối tượng sinh tồn kỳ phương thức.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
Ở kể trên số hiệu trung,r3
Là một cái hữu giá trị trích dẫn, trích dẫn chính là hữu giá trịs1 + s1
.r2
Là một cái tả giá trị trích dẫn, có thể phát hiệnHữu giá trị trích dẫn có thể chuyển vì const tân trang tả giá trị trích dẫn.
Một ít ví dụ
++i
Cùngi++
++i
Cùngi++
Là điển hình tả giá trị cùng hữu giá trị.++i
Thực hiện là trực tiếp cấp i lượng biến đổi thêm một, sau đó phản hồi i bản thân. Bởi vì i là nội tồn trung lượng biến đổi, bởi vậy có thể là tả giá trị. Trên thực tế trước tự tăng hàm số ký tên làT& T::operator++();
.Mài++
Tắc không giống nhau, nó thực hiện là dùng lâm thời lượng biến đổi tồn hạ i, sau đó lại đối i thêm một, phản hồi chính là lâm thời lượng biến đổi, bởi vậy là hữu giá trị. Sau tự tăng hàm số ký tên làT T::operator++(int);
.
1 2 3 4 5 6 7 8 |
|
Di động ngữ nghĩa cùngstd::move
(C++11)
Ở C++11 lúc sau, C++ lợi dụng hữu giá trị trích dẫn tân tăng di động ngữ nghĩa duy trì, dùng để tránh cho đối tượng ở đôi không gian phục chế ( nhưng là vô pháp tránh cho sạn không gian phục chế ), STL vật chứa đối nên đặc tính có hoàn chỉnh duy trì. Cụ thể đặc tính cóDi động cấu tạo hàm số,Di động phú giá trịCùng có di động năng lực hàm số ( tham số đựng hữu giá trị trích dẫn ). Mặt khác,std::move
Hàm số có thể dùng để sinh ra hữu giá trị trích dẫn, yêu cầu bao hàm<utility>
Đầu văn kiện.
Chú ý: Một cái đối tượng bị di động sau không ứng đối này tiến hành bất luận cái gì thao tác, vô luận là sửa chữa vẫn là phỏng vấn.Bị di động đối tượng ở vào hữu hiệu nhưng chưa chỉ định trạng thái, nội dung cụ thể ỷ lại với stl thực hiện. Nếu yêu cầu phỏng vấn ( tức chỉ định một loại trạng thái ), có thể sử dụng nên đối tượngswap
Thành viên hàm số hoặc là thiên đặc hoástd::swap
Trao đổi hai cái đối tượng ( đồng dạng có thể tránh cho đôi không gian phục chế ).
1 2 3 4 5 6 7 8 9 10 11 12 |
|
Chú ý kể trên số hiệu chỉ ở C++11 lúc sau nhưng dùng.
Hàm số phản hồi trích dẫn
Làm hàm số phản hồi trích dẫn giá trị có thể tránh cho hàm số ở phản hồi khi đối phản hồi giá trị tiến hành copy, như
1 |
|
Ngươi không thể phản hồi ở hàm số trung bộ phận lượng biến đổi trích dẫn, nếu nhất định phải ở hàm số nội lượng biến đổi. Thỉnh sử dụng động thái nội tồn. Tỷ như như sau hai cái hàm số đều sẽ sinh ra huyền rũ trích dẫn, dẫn tới chưa định nghĩa hành vi.
1 2 3 4 5 6 7 8 9 |
|
Đương hữu giá trị trích dẫn chỉ hướng không gian ở tiến vào hàm số trước đã phân phối khi, hữu giá trị trích dẫn có thể tránh cho phản hồi giá trị copy.
1 2 3 4 5 6 7 8 9 |
|
Tham khảo nội dung
- C++ ngôn ngữ hồ sơ —— trích dẫn thanh minh
- C++ ngôn ngữ hồ sơ —— giá trị phân loại
- Is returning by rvalue reference more efficient?
- Thiển nói giá trị phân loại và lịch sử
Bổn giao diện gần nhất đổi mới:2023/12/7 02:32:29,Đổi mới lịch sử
Phát hiện sai lầm? Tưởng cùng nhau hoàn thiện?Ở GitHub thượng biên tập này trang!
Bổn giao diện cống hiến giả:cmpute,CoderOJ,Duodenum87,Enter-tainer,Ir1d,ksyx,mgt,ouuan,Xeonacid
Bổn giao diện toàn bộ nội dung ởCC BY-SA 4.0CùngSATAHiệp nghị chi điều khoản hạ cung cấp, phụ gia điều khoản cũng khả năng ứng dụng