Định nghĩa lại các thành viên lớp cơ sở trong một lớp dẫn xuất

Xem chủ đề cũ hơn Xem chủ đề mới hơn Go down

Định nghĩa lại các thành viên lớp cơ sở trong một lớp dẫn xuất

Bài gửi by nth on 02/08/09, 12:51 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

[You must be registered and logged in to see this link.]
//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

[You must be registered and logged in to see this link.]
//dinh nghia cac ham thanh vien cua employee
#include
#include
#include
#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

//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

[You must be registered and logged in to see this link.]
//dinh nghia cac ham thanh vien cua lop GioLV
#include
#include
#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: "<<
cout<<"So tien: "<<<<
}


File thithanh.cpp

[You must be registered and logged in to see this link.]
#include
#include "gio.h"

void main()
{
GioLV H("Au","Dung",40.0, 8.5);
H.Print();
cout<<<"Nhan cong: "<
H.Employee::Print();
}

nth
Admin
Admin

Tổng số bài gửi: 550
Số điểm: 1113
Số lần được cám ơn: 33
Ngày đến diễn đàn:: 01/08/2009
Tuổi: 25
Đến từ: Thiên Đường

Xem lý lịch thành viên http://thuhuong.hot4um.com

Về Đầu Trang Go down

Xem chủ đề cũ hơn Xem chủ đề mới hơn Về Đầu Trang

- Similar topics

Permissions in this forum:
Bạn không có quyền trả lời bài viết