Hàm Bạn Trong C++ | CppDeveloper
Có thể bạn quan tâm
Một hàm cũng có thể là bạn của một lớp. Hàm như vậy có thể truy cập vào tất cả các thành phần private và protected của lớp.
Các quy tắc về hàm bạn hơi khác với quy tắc về lớp bạn:
- một khai báo hàm bạn phải chứa một nguyên mẫu đầy đủ của hàm (bao gồm cả tham số và kiểu trả về); một hàm có cùng tên, nhưng không tương thích về tham số và kiểu trả về sẽ không được công nhận là một hàm bạn
- một lớp có thể có nhiều hàm bạn
- một hàm có thể là bạn của nhiều lớp
- một lớp có thể nhận cả hàm toàn cục và hàm thành viên (của class khác) là bạn
Hãy xem ví dụ sau →
C++ #include <iostream> using namespace std; class A; class C { public: void dec(A &a); }; class A { friend class B; friend void C::dec(A&); friend void DoIt(A&); private: int field; protected: void print(void) { cout << "It's a secret, that field = " << field << endl; } }; void C::dec(A &a) { a.field--; } class B { public: void DoIt(A &a) { a.print(); } }; void DoIt(A &a) { a.field = 99; } int main(void) { A a; B b; C c; DoIt(a); b.DoIt(a); return 0; }| 1234567891011121314151617181920212223242526272829303132333435363738 | #include <iostream> usingnamespacestd; classA; classC{public:voiddec(A&a);}; classA{friendclassB;friendvoidC::dec(A&);friendvoidDoIt(A&);private:intfield;protected:voidprint(void){cout<<"It's a secret, that field = "<<field<<endl;}}; voidC::dec(A&a) { a.field--;} classB{public:voidDoIt(A&a) { a.print();}}; voidDoIt(A&a) { a.field = 99;} intmain(void){Aa;Bb;Cc;DoIt(a);b.DoIt(a);return0;} |
Lớp A có ba người bạn. Đó là
- lớp B
- hàm toàn cục DoIt ()
- hàm thành viên dec (của lớp C)
Lưu ý dòng:
class A;
ở đầu chương trình. Nó không làm gì ngoại trừ thông báo cho trình biên dịch rằng một lớp có tên là A sẽ được sử dụng. Nếu thiếu dòng này sẽ gây ra lỗi biên dịch vì trình biên dịch sẽ không nhận thức được sự tồn tại của lớp A khi phân tích phần thân của lớp C. Cái này gọi là Forward Declaration.
Chương trình trên sẽ output ra →
C++ It's a secret, that field = 99| 1 | It'sasecret,that field=99 |
Từ khóa » Hàm Bạn Là Gì C++
-
Dùng Hàm Bạn Và Lớp Bạn Trong C++ Như Thế Nào? - CodeLearn
-
Hàm Bạn Và Lớp Bạn Trong C++ - Lập Trình Không Khó
-
Hàm Bạn Và Lớp Bạn Trong C++ | TopDev
-
Hàm Bạn (Friend Function) Và Lớp Bạn (Friend Class) Trong C++
-
Chi Tiết Bài Học Hàm Bạn (friend Function) - Vimentor
-
[Tự Học C++] Hàm Bạn(Friend Functions) Và Lớp Bạn Trong C++
-
Hàm Bạn (friend Function) Trong Lập Trình Hướng đối Tượng Với C++
-
Hàm Friend Trong C++ - Học Lập Trình C++ Online - Viettuts
-
Friend Trong C++
-
Lập Trình C++ - Hàm Bạn
-
Hàm Friend Trong C++
-
[C++] - Bài 52: Hàm Bạn - Friend Funtions. - YouTube
-
Kỹ Thuật C++ Sự Khác Nhau Giữa Hàm Bạn Và Phương Thức Của Một ...
-
Hàm Trong C/C++