Đang chuẩn bị nút TẢI XUỐNG, xin hãy chờ
Tải xuống
Quan hệ giữa các lớp Các hàm bạn bè (từ khoá friend) Trong bài trước chúng ta đã được biết rằng có ba mức bảo vệ khác nhau đối với các thành viên trong một lớp: public, protected và private. Đối với các thành viên protected và private, chúng không thể được truy xuất ở bên ngoài lớp mà chúng được khai báo. Tuy nhiên cái gì cũng có ngoại lệ, bằng cách sử dụng từ khoá friend trong một lớp chúng ta có thể cho phép một hàm bên ngoài truy xuất vào các thành viên protected và private trong. | Quan he giTa cäc lo p Các hàm bạn bè từ khoá friend Trong bài trước chúng ta đã được biết rằng có ba mức bảo vệ khác nhau đối với các thành viên trong một lớp public protected và private. Đối với các thành viên protected và private chúng không thể được truy xuất ở bên ngoài lớp mà chúng được khai báo. Tuy nhiên cái gì cũng có ngoại lệ bằng cách sử dụng từ khoá friend trong một lớp chúng ta có thể cho phép một hàm bên ngoài truy xuất vào các thành viên protected và private trong một lớp. Để có thể cho phép một hàm bên ngoài truy xuất vào các thành viên private và protected của một lớp chúng ta phải khai báo mẫu hàm đó với từ khoá friend bên trong phần khai báo của lớp. Trong ví dụ sau chúng ta khai báo hàm bạn bè duplicate friend functions include iostream.h class CRectangle int width height public void set_values int int int area void return width height friend CRectangle duplicate CRectangle void CRectangle set_values int a int b width a height b CRectangle duplicate CRectangle rectparam 24 CRectangle rectres rectres.width rectparam.width 2 rectres.height rectparam.height 2 return rectres int main CRectangle rect rectb rect.set_values 2 3 rectb duplicate rect cout rectb.area Ở bên trong hàm duplicate chúng ta có thể truy xuất vào các thành viên width và height của các đối tượng khác nhau thuộc lớp CRectangle. Hãy chú ý rằng duplicate không phải là thành viên của lớp CRectangle. Nói chung việc sử dụng các hàm bạn bè không nằm trong phương thức lập trình hướng đối tượng vì vậy tốt hơn là hãy sử dụng các thành viên của lớp bất cứ khi nào có thể. Như ở trong ví dụ trước chúng ta hoàn toàn có thể tích hợp duplicate vào bên trong lớp. Các lớp bạn bè friend Ngoài việc có thể khai báo các hàm bạn bè chúng ta cũng có thể định nghĩa một lớp là bạn của một lớp khác. Việc này sẽ cho phép lớp thứ hai có thể truy xuất vào các thành viên protected and private của lớp thứ nhất friend class include iostream.h class CSquare class CRectangle int width height public int area void .