Ví dụ | Kết quả |
#include class Rectangle { private: int w; int h; public: Rectangle(int, int); friend int Area(Rectangle); }; Rectangle::Rectangle(int w, int h){ this->w = w; this->h = h; } int Area(Rectangle rec){ return (rec.w*rec.h); } int main() { Rectangle rec(2, 5); cout< return 0; } | 10 |
Lớp bạn: nếu ta có hai lớp A và B, và khai báo rằng B là bạn của A, thì khi đó, các phương thức của lớp A có thể truy cập đến các thuộc tính private và protected của lớp B.
Ví dụ | Kết quả |
#include class Rectangle { private: int w; int h; public: Rectangle(int, int); friend class MakeSquare; }; class MakeSquare{ private: int w; int h; public: MakeSquare(Rectangle); void ShowSquare(void); }; MakeSquare::MakeSquare(Rectangle rec){ this->w = max(rec.w, rec.h); this->h = max(rec.w, rec.h); } void MakeSquare::ShowSquare(void){ cout<<”Square: “< } int main() { Rectangle rec(2, 5); MakeSquare mk(rec); mk.ShowSquare(); return 0; } | Square: 5×5 |
Bạn cũng lưu ý rằng A là bạn của B, thì không có nghĩa là B cũng là bạn của A. Như vậy, tình bạn có thể là một chiều hoặc hai chiều tùy thuộc vào sự quy định của người lập trình.
bài viết rất hay đang cần tìm hiểu về cái này ^^
ReplyDelete