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)
{
CRectangle rectres;