intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng Kỹ thuật lập trình: Chương 6 - Trần Quang Hải Bằng

Chia sẻ: Sơn Tùng | Ngày: | Loại File: PDF | Số trang:3

55
lượt xem
3
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Bài giảng "Kỹ thuật lập trình - Chương 6: Hàm bạn - Lớp bạn" cung cấp cho người học các kiến thức: Giới thiệu, hàm độc lập là hàm bạn, hàm thành viên là hàm bạn, hàm bạn của nhiều lớp, lớp bạn. Mời các bạn cùng tham khảo nội dung chi tiết.

Chủ đề:
Lưu

Nội dung Text: Bài giảng Kỹ thuật lập trình: Chương 6 - Trần Quang Hải Bằng

  1. Nội dung Chương 6 • Giới thiệu • Hàm ñộc lập là hàm bạn HÀM BẠN – LỚP BẠN • Hàm thành viên là hàm bạn • Hàm bạn của nhiều lớp • Lớp bạn 1 2 Giới thiệu Giới thiệu • Tại sao cần hàm bạn? • Khái niệm hàm bạn class Diem { Muốn truy cập các thành phần – Hàm bạn của 1 lớp là hàm có khả năng truy cập ñến int x, y; private hay protected của 1 lớp các thành phần dùng riêng (dữ liệu và hàm) của lớp public: từ bên ngoài của lớp ñó. …. int GiaTriX() – Cú pháp: khai báo prototype ca hàm trong lớp phải thiết kế các hàm { return x; } lấy giá trị dữ liệu thành viên muốn cho phép truy cập ñó với từ khóa friend. }; class A { class B { class DuongTron { Nếu số lượng các thành phần int a1; … dữ liệu trong lớp quá nhiều public : int HamThanhVien(); Diem tam; … }; int bankinh; Friend void HamDocLap(A); public: thiết kế hàm bạn (friend) Friend int B::HamThanhVien(); int B::HamThanhVien() …. }; { void InHoanhDoTam(){ Khai báo trong lớp Diem hàm sau: void HamDocLap(A x) A y; … cout
  2. Hàm ñộc lập là hàm bạn Hàm ñộc lập là hàm bạn • Hàm ñộc lập (không thuộc lớp nào) có thể ñược khai báo là bạn của 1 lớp. • Chỉ cần khai báo tên hàm ñộc lập bên trong lớp. class PhanSo { int tu, mau; • Trong nội dung hàm ñộc lập, có thể truy cập bất kỳ thành public: phần nào thuộc lớp ñó. … friend int SoSanhBang (PhanSo,PhanSo); class Diem { }; int x,y; public: int SoSanhBang(PhanSo a, PhanSo b){ … if(a.tu*b.mau== b.tu*a.mau) friend int Trung(Diem, Diem); return 1; }; else int Trung(Diem a, Diem b){ return 0; if (a.x==b.x && a.y==b.y) } return 1; else return 0; } 5 6 Hàm thành viên là hàm bạn Hàm bạn của nhiều lớp • Hàm thành viên của 1 lớp có thể ñược khai báo là bạn • Một lớp có thể có nhiều hàm bạn (ñộc lập hay hàm thành của 1 lớp khác. viên của lớp khác). • Chỉ cần khai báo :: • Một hàm (ñộc lập hay hàm thành viên) có thể là bạn của bên trong lớp cần truy cập. nhiều lớp. • Trong nội dung hàm thành viên, có thể truy cập bất kỳ Hàm bạn ñã phá vỡ tính bao gói của OOP => không lạm dụng. thành phần nào thuộc lớp ñã khai báo. class DoanThang { class B; class B { Diem d1, d2; class A { … public: … void F(); class DoanThang; … friend void B::F(); friend int F1(A , B); class Diem { float ChieuDai() { friend int F1(A, B); … int x,y; sqrt( … }; public: pow((d1.x - d2.x),2) }; void B::F(){ … } … + Lớp có 2 hàm bạn int F1(A x, B y) { … } friend float pow((d1.y - d2.y),2)); Hàm F1(…) là bạn DoanThang::ChieuDai(); } của 2 lớp A và B }; }; 7 8
  3. Lớp bạn (friend class) Khi muốn khai báo tất cả Khai báo A là các hàm thành viên của lớp bạn của lớp A là bạn của lớp B lớp B class DuongTron; class DuongTron { class Diem { Diem tam; int x,y; int bankinh; public: public: ... ... DuongTron(int x1, int y1, int bk) friend class {tam.x = a; tam.y = y1; bankinh = bk; DuongTron; } }: void Ve() { cout
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2