symphonyenigmatic Thành viên bậc 3
Tổng số bài gửi : 61 Points : 104 Reputation : 6 Join date : 26/07/2009 Age : 35 Đến từ : http:://thienthancntt.tk
| Tiêu đề: Định nghĩa lại các thành viên lớp cơ sở trong một lớp dẫn xuất Sun Aug 02, 2009 6:08 pm | |
| Một lớp dẫn xuất có thể định nghĩa lại một hàm thành viên lớp cơ sở. Điều này được gọi là overriding. Khi hàm đó được đề cập bởi tên trong lớp dẫn xuất, phiên bản của lớp dẫn xuất được chọn một cách tự động. Toán tử định phạm vi có thể sử dụng để truy cập phiên bản của lớp cơ sở từ lớp dẫn xuất. Ví dụ file code như sau: file employ.h - Code:
-
http://employ.h//dinh nghi alop employ #ifndef EMPLOY_H #define EMPLOY_H class Employee { private: char *ho; char *ten; public: Employee(const char *h, const char *t); void Print() const; ~Employee(); }; #endif File employ.cpp - Code:
-
http://employ.cpp//dinh nghia cac ham thanh vien cua employee #include <string.h> #include <iostream.h> #include <assert.h> #include "employ.h" Employee::Employee(const char *h, const char *t) { ho = new char[ strlen(h) + 1 ]; assert(ho != 0); strcpy(ho, h); ten = new char[ strlen(t) + 1 ]; assert(ten != 0); strcpy(ten, t); } void Employee::Print() const { cout << ho << ' ' << ten; } Employee::~Employee() { delete [] ho; delete [] ten; } File gio.h - Code:
-
//Dinh nghia gio lam viec cua moi cong nhan #ifndef HOURLY_H #define HOURLY_H
#include "employ.h"
class GioLV : public Employee { private: float LuongMoiGio; //Tien luong trong moi gio float GioMoiTuan; //So gio lam viec trong moi tuan public: GioLV(const char *ho, const char *ten, float SoGio, float SoTien); float TraLuong() const; // Tinh toan va tra luong void Print() const; // Dinh nghia lai ham Print() cua lop co so };
#endif
File gio.cpp - Code:
-
http://gio.cpp//dinh nghia cac ham thanh vien cua lop GioLV #include <iostream.h> #include <iomanip.h> #include "gio.h" GioLV::GioLV(const char *ho, const char *ten, float SoGio, float SoTien) : Employee(ho, ten) { GioMoiTuan = SoGio; LuongMoiGio = SoTien; } float GioLV::TraLuong() const { return LuongMoiGio*GioMoiTuan; } void GioLV::Print() const { //cout<<"Gio lam viec: "<<endl<<Employee::Print(); cout<<"So tien: "<<setiosflags(ios::showpoint)<<setprecision(2)<<TraLuong()<<endl; } File thithanh.cpp - Code:
-
http://thucthi1.cpp#include <iostream.h> #include "gio.h" void main() { GioLV H("Au","Dung",40.0, 8.5); H.Print(); cout<<endl<<"Nhan cong: "<<endl; H.Employee::Print(); } | |
|
anbinhtrong Thành viên bậc 1
Tổng số bài gửi : 13 Points : 17 Reputation : 1 Join date : 29/08/2009 Age : 35 Đến từ : BT
| Tiêu đề: Re: Định nghĩa lại các thành viên lớp cơ sở trong một lớp dẫn xuất Wed Sep 16, 2009 11:08 am | |
| Nếu nói dẫn dã là chồng hàm phải không? Dùng nhiều thuật ngữ quá, người mới học sẽ rất lơ mơ. | |
|