Ngôn ngữ C: Mở Ruộng Struct

Tram Ho

Khi sử dụng struct để mô tả các bản ghi dữ liệu mô phỏng về các thực thể, có những trường hợp nhất định khi giữa các thực thể có tính chất kế thừa các đặc tính, hiển nhiên chúng ta cũng muốn phản ánh đặc trưng kế thừa inheritance trong code thay vì tổ hợp composition. Tính năng kế thừa inheritance không được C hỗ trợ biểu thị về mặt cú pháp, tuy nhiên về mặt kĩ thuật thì mặc định là tính năng này đã được triển khai đối với các struct khi làm việc thông qua các con trỏ struct pointer.

Struct Pointer

Khi làm việc với các struct thông qua con trỏ tham chiếu, chúng ta luôn có địa chỉ của struct chính là địa chỉ của trường dữ liệu đầu tiên trong định nghĩa của kiểu struct đó.

Backward Casting

Điều này có nghĩa là nếu như chúng ta lưu địa chỉ của một struct_person ở vị trí trường dữ liệu đầu tiên của một kiểu struct khác thì kiểu struct mới định nghĩa sẽ có thể được xem là một kiểu kế thừa từ class Person. Bởi giả sử nếu chúng ta đang có một con trỏ Worker kế thừa từ Person theo cách này, một hàm được định nghĩa có tham số đầu vào là Person cũng sẽ hoạt động tốt nếu chúng ta truyền vào địa chỉ của ô nhớ đầu tiên lưu trữ kiểu Worker.




Chia sẻ bài viết ngay

Nguồn bài viết : Viblo