Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.
Hàm Bạn và Lớp Bạn
Hàm bạn: Nếu một thành viên của lớp được quy định là private hoặc protected thì chỉ
có các hàm thành vi...
{
private:
int w;
int h;
public:
Rectangle(int, int);
friend class MakeSquare;
};
class MakeSquare{
private:
int w;
int h;...
Sie haben dieses Dokument abgeschlossen.
Lade die Datei herunter und lese sie offline.
Nächste SlideShare
Trabajos tic
Weiter
  • Gehören Sie zu den Ersten, denen das gefällt!

Friend function

  1. 1. Hàm Bạn và Lớp Bạn Hàm bạn: Nếu một thành viên của lớp được quy định là private hoặc protected thì chỉ có các hàm thành viên của lớp mới có quyền truy cập đến nó. Nếu một phương thức không phải là thành viên của lớp muốn truy cập đến, thì nó phải là hàm bạn của lớp đó. Phương thức bạn có thể được khai báo nhờ từ khóa friend. Ví dụ Kết quả #include using namespace std; 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 Giải thích: Hàm Area là một hàm toàn cục, nó không phải là thành viên của lớp (vì không sử dụng toán tử phạm vi khi khai báo). Nếu bạn cố tình truy cập đến các dữ liệu w và h thì chương trình dịch sẽ báo lỗi, bởi chúng được quy định là private. Khi ta khai báo hàm Area là hàm bạn, nó sẽ giải quyết vấn đề này. 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 using namespace std; class Rectangle Square: 5×5
  2. 2. { 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: “<<<”x”< } int main() { Rectangle rec(2, 5); MakeSquare mk(rec); mk.ShowSquare(); return 0; } Giải thích: Lớp Rectangle được quy định là lớp bạn của lớp Square, do đó, lớp Square có quyền truy cập đến các thuộc tính private và protected của lớp Rectangle. Hàm tạo của lớp Square truy cập đến các dữ liệu thành viên của lớp Rectangle để lấy chiều dài và chiều rộng của đối tượng rec (dù chúng là private), để tạo nên đối tượng mk. Đối tượng Square được tạo mới với cạnh của nó là số đo lớn nhất các cạnh của đối tượng Rectangle. 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.

Aufrufe

Aufrufe insgesamt

34

Auf Slideshare

0

Aus Einbettungen

0

Anzahl der Einbettungen

1

Befehle

Downloads

2

Geteilt

0

Kommentare

0

Likes

0

×