Hàm bạn và lớp bạn
Ở bài này chúng ta sẽ hack não bằng 2 khái niệm khá thú vị trong C++ đó là hàm bạn (friend function) và lớp bạn (friend class).
Vấn đề mở đầu
Có 2 loại tiền ảo, Scoin và Gcoin với cách tính như sau:
- Scoin = giá trị * rate ($)
- Gcoin = giá trị * rate + vultra ($)
Biết Scoin có rate = 10, Gcoin có rate = 5 và vultra = 10. Tính tổng số tiền 5 Scoin + 10 Gcoin ra $?
Chúng ta cài đặt các lớp như sau:
Vấn đề: chúng ta đang có 2 đối tượng, vậy phương thức cộng sẽ thuộc đối tượng nào? Đó là khi chúng ta cần đến hàm bạn (friend function).
Friend function - hàm bạn
Hàm bạn không phải là hàm thành phần của 1 lớp nhưng có quyền truy cập các thuộc tính private của lớp đó.
Đây là cách chúng ta dùng để chia sẻ dữ liệu giữa các đối tượng với hàm tùy ý (friend) trong chương trình, để khai báo hàm bạn chúng ta dùng từ khóa friend
. Hàm bạn có thể được khai báo ở nhiều lớp khác nhau.
Trở lại với bài toán trên, chúng ta sẽ thiết lập các lớp như sau:
Kết quả chương trình trên là: Gia tri = 110.
Friend class - lớp bạn
Là lớp có thể truy xuất đến các thuộc tính private của lớp khác. Chức năng cũng khá tương tự friend function, cùng xem ví dụ sau nhé:
Nhìn ví dụ là đủ hiểu rồi đúng không nào :)
Tổng kết
Thế là chúng ta đã tìm hiểu xong hàm bạn và lớp bạn. Có thắc mắc các bạn bình luận bên dưới nhé. Pie~