CÁC HÀM VÀ CÁC LỚP FRIEND

Một phần của tài liệu Giáo án - Bài giảng: TÀI LIỆU C++ (Trang 67 - 68)

Một hàm friend của một lớp được định nghĩa bên ngồi phạm vi của lớp đó, lúc này có quyền truy cập

đến các thành viên private hoặc protected của một lớp. Một hàm hay tồn bộ lớp có thể được khai báo là

một friend của lớp khác.

Để khai báo một hàm là một friend của một lớp, đứng trước prototype của hàm trong định nghĩa lớp với

từ khóa friend. như sau:

friend <function-declarator>;

Để khai báo một lớp là friend của lớp khác như sau:

friend <class-name>;

Ví dụ 3.16: Chương trình sau minh họa khai báo và sử dụng hàm friend.

1: #include <iostream.h> 2:

3: class Count 4: {

5: friend void SetX(Count &, int); //Khai báo friend 6: public:

7: Count()//Constructor 8: {

9: X = 0; 10: }

11: void Print() const //Xuất 12: { 13: cout << X << endl; 14: } 15: private: 16: int X; 17: }; 18:

19: //Có thể thay đổi dữ liệu private của lớp Count vì 20: //SetX() khai báo là một hàm friend của lớp Count 21: void SetX(Count &C, int Val)

22: {

23: C.X = Val; //Hợp lệ: SetX() là một hàm friend của lớp Count 24: }

68 25: 26: int main() 27: { 28: Count Object; 29:

30: cout << "Object.X after instantiation: "; 31: Object.Print();

32: cout << "Object.X after call to SetX friend function: "; 33: SetX(Object, 8); //Thiết lập X với một friend

34: Object.Print(); 35: return 0;

36: }

Chúng ta chạy ví dụ 3.16, kết quả ở hình 3.17

Hình 3.17: Kết quả của ví dụ 3.16

Có thể chỉ định các hàm được đa năng hóa là các friend của lớp. Mỗi hàm được đa năng hóa phải được khai báo tường minh trong định nghĩa lớp như là một friend của lớp.

Một phần của tài liệu Giáo án - Bài giảng: TÀI LIỆU C++ (Trang 67 - 68)