Sao chép cấu trúc
Các cấu trúc cùng kiểu có thể được sao chép hoàn toàn vào nhau bằng toán tử gán '='. Hãy chứng minh quy tắc này bằng ví dụ về cấu trúc Result
. Chúng ta lấy phiên bản đầu tiên của r
từ hàm calculate
.
void OnStart()
{
...
Result r = calculate(s);
r.print();
// will output to the log:
// 0.5 1 ok
// 1.00000 2.00000 3.00000
...
Result r2;
r2 = r;
r2.print();
// will output to the log the same values:
// 0.5 1 ok
// 1.00000 2.00000 3.00000
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Sau đó, biến Result
r2
được tạo thêm, và nội dung của biến r
, tất cả các trường cùng lúc, đã được sao chép vào đó. Độ chính xác của thao tác có thể được xác minh bằng cách xuất ra nhật ký sử dụng phương thức print
(các dòng được ghi trong phần bình luận).
Cần lưu ý rằng việc định nghĩa hai kiểu cấu trúc với cùng tập hợp các trường không làm cho hai kiểu này trở thành giống nhau. Không thể gán hoàn toàn một cấu trúc cho một cấu trúc khác, chỉ cho phép gán từng thành viên trong những trường hợp như vậy.
Một chút nữa, chúng ta sẽ nói về kế thừa cấu trúc, điều này sẽ cung cấp thêm nhiều lựa chọn cho việc sao chép. Thực tế là việc sao chép không chỉ hoạt động giữa các cấu trúc cùng kiểu mà còn giữa các kiểu liên quan. Tuy nhiên, có những sắc thái quan trọng mà chúng ta sẽ đề cập trong phần Bố cục và kế thừa của cấu trúc.