Nếu tôi có cấu trúc nhanh chóng với bên trong một thuộc tính lớp và tôi sao chép đối tượng struct, thuộc tính lớp được sao chép hoặc được truyền theo tham chiếu?Các lớp học nhanh bên trong cấu trúc có được sao chép bằng bản sao trong khi chuyển nhượng không?
5
A
Trả lời
12
Thông qua tham chiếu. Bạn có thể kiểm tra nó. Tuyên bố:
class A{}
struct B { let a = A()}
thì:
let b = B()
print("A = \(unsafeAddressOf(b.a))")//0x0000600000019450
let b_copy = b
print("A = \(unsafeAddressOf(b_copy.a))")//0x0000600000019450
5
Tất cả các thuộc tính của một struct được sao chép (như nếu bạn đã gán (=
) mỗi tài sản của struct cũ sang tài sản tương ứng của cấu trúc mới) khi cấu trúc được sao chép, bất kể loại nào.
Khi bạn nói "thuộc tính lớp", tôi giả sử bạn có nghĩa là một loại tham chiếu. (Kiểu có cùng tên với một lớp biểu thị một kiểu tham chiếu cho các tham chiếu trỏ tới các đối tượng của lớp đó.) Sao chép một giá trị của kiểu tham chiếu (tham chiếu) tạo một tham chiếu khác trỏ đến cùng một đối tượng. Lưu ý rằng "đối tượng" không phải là giá trị trong Swift - không có "loại đối tượng" - thay vào đó, các đối tượng luôn được thao tác thông qua các tham chiếu trỏ đến chúng.
Các vấn đề liên quan
- 1. sao chép và chuyển nhượng
- 2. Cấu trúc bên trong lớp học
- 3. Tại sao có bản sao trước khi chuyển nhượng?
- 4. Sao chép dữ liệu có cấu trúc trong C++
- 5. Sao chép cấu trúc vào cấu trúc trong C
- 6. ES6 Cấu trúc chuyển nhượng?
- 7. Chuyển nhượng lĩnh vực/tài sản trong một cấu trúc
- 8. Sao chép cấu trúc vào mảng char
- 9. Bạn có thể xóa cấu trúc thư mục khi sao chép tệp trong gulp không?
- 10. Sao chép một cấu trúc sang một cấu trúc khác
- 11. Tại sao Cấu trúc tĩnh không được phép trong C#?
- 12. sao chép một lớp học, C#
- 13. Sao chép các thành viên riêng lẻ nhanh hơn toàn bộ cấu trúc?
- 14. "Hầu như mặc định" constructor sao chép (& nhà điều hành chuyển nhượng) trong C + +
- 15. Toàn bộ Bản đồ có được sao chép khi chèn một ràng buộc mới không?
- 16. Mặc định di chuyển constructor/nhiệm vụ và xóa constructor sao chép/chuyển nhượng
- 17. Lưu cấu trúc trong lớp vào NSUserDefaults bằng Swift
- 18. Sao chép danh sách sao chép có gọi ra bản sao ctor không?
- 19. Sao chép hai cấu trúc trong C có chứa các con trỏ char
- 20. Tại sao mã được yêu cầu phải có một nhà xây dựng sao chép/di chuyển ngay cả khi bản sao được phép sao chép?
- 21. Android: Tạo lớp học có thể chuyển nhượng
- 22. Cấu trúc có thực sự được sao chép giữa các goroutines nếu được gửi qua kênh Golang không?
- 23. Tại sao đặt các biến bên trong cấu trúc của một lớp PHP khi bạn có thể đặt chúng khi chúng được khai báo?
- 24. Sao chép tệp nhanh Delphi
- 25. Có cách nào nhanh hơn/sạch hơn để sao chép cấu trúc vào một mảng trong C#?
- 26. Kịch bản lệnh "Sao chép nhanh nhất" nhanh nhất
- 27. Mảng hỗn hợp của các cấu trúc từ .NET đến C++: khi nào nó sao chép?
- 28. Tại sao "Sao chép nếu mới hơn" không sao chép tệp khi tệp được cập nhật?
- 29. UNIX shell file sao chép cấu trúc thư mục phẳng
- 30. hàm tạo bản sao tổng quát trong lớp bên trong