Danh mục

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    
Hoai.2512

Phí tải xuống: 7,000 VND Tải xuống file đầy đủ (25 trang) 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); ...

Tài liệu được xem nhiều: