Tham khảo tài liệu ''kỹ thuật lập trình - chương 6'', công nghệ thông tin, kỹ thuật lập trình phục vụ nhu cầu học tập, nghiên cứu và làm việc hiệu quả
Chơng Tơng ứng bội phơng thức ảo Tơng ứng bội phơng thức ảo công cụ mạnh C++ cho phép tổ chức quản lý đối tợng khác theo lợc đồ Một khái niệm khác liên quan là: lớp sở trừu tợng Chơng trình bầy cách sử dụng công cụ để xây dựng chơng trình quản lý nhiều đối tợng khác theo lợc đồ thống § Ph¬ng thøc tÜnh 1.1 Lêi gäi tíi ph¬ng thức tĩnh Nh đà biết lớp dẫn xuất đợc thừa kế phơng thức lớp sở tiền bối Ví dụ lớp A sở B, lớp B lại sở C, C có lớp sở tiền bối B A Lớp C đợc thừa kế phơng thức A B Các phơng thức mà nói phơng thức tĩnh Để tìm hiểu thêm cách gọi tới phơng thức tÜnh, ta xÐt vÝ dơ vỊ c¸c líp A, B vµ C nh sau: class A { public: void xuat() { cout xuat(); hÃy lý giải xem phơng thức (trong phơng thức A::xuat, B::xuat C::xuat) đợc gọi Câu trả lời nh sau: Cả câu lệnh gọi tới phơng thức A::xuat() , trỏ p, q r có kiểu A Nh tóm lợc cách thức gọi phơng thức tĩnh nh sau: Quy tắc gọi phơng thức tÜnh: Lêi gäi tíi ph¬ng thøc tÜnh bao giê cịng xác định rõ phơng thức (trong số phơng thức trùng tên lớp có quan hệ thừa kế) đợc gọi: Nếu lời gọi xuất phát từ đối tợng lớp nào, phơng thức lớp đợc gọi Nếu lời gọi xuất phát từ trỏ kiểu lớp nào, phơng thức lớp đợc gọi trỏ chứa địa đối tợng 1.2 Ví dơ XÐt líp A, B, C vµ D Líp B C có chung lớp sở A Lớp D dẫn xuất từ C Cả lớp có phơng thức xuat() Xét hàm: void hien(A *p) { p->xuat(); } Không cần biết tới địa đối tợng truyền cho đối trỏ p, lời gọi hàm luôn 319 gọi tới phơng thức A::xuat() trỏ p kiểu A Nh bốn câu lệnh: hien(&a); hien(&b); hien(&c); hien(&d); hàm main (của chơng trình dới đây) gọi tới A::xuat() //CT6-01 // Phuong thuc tinh #include #include 320 #include #include class A { private: int n; public: A() { n=0; } A(int n1) { n=n1; } void xuat() { cout