ThienThanCNTT
Bạn có muốn phản ứng với tin nhắn này? Vui lòng đăng ký diễn đàn trong một vài cú nhấp chuột hoặc đăng nhập để tiếp tục.

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

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 Empty Đị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 02/08/09, 05: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
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 : 35
Đến từ : Thiên Đường

https://thuhuong.forumvi.net

Về Đầu Trang Go down

Về Đầu Trang

- Similar topics

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