Kỹ thuật lập trình - Chương 6
Số trang: 25
Loại file: doc
Dung lượng: 268.50 KB
Lượt xem: 16
Lượt tải: 0
Xem trước 3 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
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ả
Nội dung trích xuất từ tài liệu:
Kỹ thuật lập trình - Chương 6 CHƯƠNG 6 public: TƯƠNG ỨNG BỘI VÀ PHƯƠNG THỨC ẢO void xuat() { Tương ứng bội và phương thức ảo là công cụ mạnh của cout C c; // c là đối tượng kiểu c Xét 4 lớp A, B, C và D. Lớp B và C có chung lớp cơ sở A. L ớp D dẫn xuất từ C. Cả 4 lớp đều có phương thức xuat(). Xét hàm: Chúng ta hãy ghi nhớ mệnh đề sau về con trỏ của các lớpdẫn xuất và cơ sở: void hien(A *p) Phép gán con trỏ: Con trỏ của lớp cơ sở có thể dùng để chứa {địa chỉ các đối tượng của lớp dẫn xuất. p->xuat(); Như vậy cả 3 phép gán sau đều hợp lệ: } p = &a ; Không cần biết tới địa chỉ của đối tượng nào sẽ truyền cho đối con trỏ p, lời gọi trong hàm luôn luôn gọi tới ph ương th ức q = &b ; 319 320 A::xuat() vì con trỏ p kiểu A. Như vậy bốn câu lệnh: r = &c ; hien(&a); hien(&b); Chúng ta tiếp tục xét các lời gọi phương thức từ các con tr ỏ p,q, r: hien(&c); p->xuat(); hien(&d); trong hàm main (của chương trình dưới đây) đều gọi tới A::xuat(). q->xuat(); r->xuat(); //CT6-01 // Phuong thuc tinhvà hãy lý giải xem phương thức nào (trong các phương thứcA::xuat, B::xuat và C::xuat) được gọi. Câu trả lời như sau: #include Cả 3 câu lệnh trên đều gọi tới phương thức A::xuat() , vì các #include con trỏ p, q và r đều có kiểu A. #include Như vậy có thể tóm lược cách thức gọi các phương thức tĩnh #include như sau: class A 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 nào (trong số các ph ương private:thức trùng tên của các lớp có quan hệ thừa kế) được gọi: int n; 1. Nếu lời gọi xuất phát từ một đối tượng của lớp nào, thì public:phương thức của lớp đó sẽ được gọi. A() 2. Nếu lời gọi xuất phát từ một con trỏ kiểu lớp nào, thì {phương thức của lớp đó sẽ được gọi bất kể con trỏ chứa địa chỉ n=0;của đối tượng nào. }1.2. Ví dụ A(int n1) { C():A() n=n1; { } } void xuat() C(int n1):A(n1) { { cout } #include class TS void main() { { private: A a(1); char ht[25]; B b(2); int sobd; C c(3); ...
Nội dung trích xuất từ tài liệu:
Kỹ thuật lập trình - Chương 6 CHƯƠNG 6 public: TƯƠNG ỨNG BỘI VÀ PHƯƠNG THỨC ẢO void xuat() { Tương ứng bội và phương thức ảo là công cụ mạnh của cout C c; // c là đối tượng kiểu c Xét 4 lớp A, B, C và D. Lớp B và C có chung lớp cơ sở A. L ớp D dẫn xuất từ C. Cả 4 lớp đều có phương thức xuat(). Xét hàm: Chúng ta hãy ghi nhớ mệnh đề sau về con trỏ của các lớpdẫn xuất và cơ sở: void hien(A *p) Phép gán con trỏ: Con trỏ của lớp cơ sở có thể dùng để chứa {địa chỉ các đối tượng của lớp dẫn xuất. p->xuat(); Như vậy cả 3 phép gán sau đều hợp lệ: } p = &a ; Không cần biết tới địa chỉ của đối tượng nào sẽ truyền cho đối con trỏ p, lời gọi trong hàm luôn luôn gọi tới ph ương th ức q = &b ; 319 320 A::xuat() vì con trỏ p kiểu A. Như vậy bốn câu lệnh: r = &c ; hien(&a); hien(&b); Chúng ta tiếp tục xét các lời gọi phương thức từ các con tr ỏ p,q, r: hien(&c); p->xuat(); hien(&d); trong hàm main (của chương trình dưới đây) đều gọi tới A::xuat(). q->xuat(); r->xuat(); //CT6-01 // Phuong thuc tinhvà hãy lý giải xem phương thức nào (trong các phương thứcA::xuat, B::xuat và C::xuat) được gọi. Câu trả lời như sau: #include Cả 3 câu lệnh trên đều gọi tới phương thức A::xuat() , vì các #include con trỏ p, q và r đều có kiểu A. #include Như vậy có thể tóm lược cách thức gọi các phương thức tĩnh #include như sau: class A 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 nào (trong số các ph ương private:thức trùng tên của các lớp có quan hệ thừa kế) được gọi: int n; 1. Nếu lời gọi xuất phát từ một đối tượng của lớp nào, thì public:phương thức của lớp đó sẽ được gọi. A() 2. Nếu lời gọi xuất phát từ một con trỏ kiểu lớp nào, thì {phương thức của lớp đó sẽ được gọi bất kể con trỏ chứa địa chỉ n=0;của đối tượng nào. }1.2. Ví dụ A(int n1) { C():A() n=n1; { } } void xuat() C(int n1):A(n1) { { cout } #include class TS void main() { { private: A a(1); char ht[25]; B b(2); int sobd; C c(3); ...
Tìm kiếm theo từ khóa liên quan:
hàm trong C lập trình C ngôn ngữ lập trình lập trình máy tính giáo án lập trìnhGợi ý tài liệu liên quan:
-
Giáo trình Lập trình hướng đối tượng: Phần 2
154 trang 276 0 0 -
Kỹ thuật lập trình trên Visual Basic 2005
148 trang 266 0 0 -
Bài thuyết trình Ngôn ngữ lập trình: Hệ điều hành Window Mobile
30 trang 265 0 0 -
Bài giảng Tin học lớp 11 bài 1: Giới thiệu ngôn ngữ lập trình C#
15 trang 237 0 0 -
Giáo trình Lập trình cơ bản với C++: Phần 1
77 trang 232 0 0 -
Bài giảng Một số hướng nghiên cứu và ứng dụng - Lê Thanh Hương
13 trang 226 0 0 -
Giáo án Tin học lớp 11 (Trọn bộ cả năm)
125 trang 218 1 0 -
NGÂN HÀNG CÂU HỎI TRẮC NGHIỆM THIẾT KẾ WEB
8 trang 207 0 0 -
15 trang 200 0 0
-
Bài tập lập trình Windows dùng C# - Bài thực hành
13 trang 184 0 0