Hàm toán tử operator:+-*/

Bài sau cho chúng ta thấy có thể sử dụng hàm toán tử operator để cộng hai đối tượng lại với nhau, cho một kết quả là kiểu lớp của 2 đối tượng đó. Bài này cũng thể hiện tính kế thừa của các lớp. Nếu biên dịch và để ý những dòng in đậm bạn sẽ hiểu cú pháp của nó. Bài này giải quyết vấn đề:

Lớp CTime mô tả về thời gian với các thuộc tính: giờ, phút, giây. Lớp CDate mô tả ngày tháng năm. Bạn hãy xây dựng lớp CDateTime mô tả về thời gian và ngày tháng kế thừa hai lớp CTime và CDate với các chức năng sau: a)Nhập thông tin thời gian và ngày tháng năm từ bàn phím
b)Hiển thị thông tin thời gian, ngày tháng năm
c)Cộng hai đối tượng CDateTime
d)Trừ hai đối tượng CDateTime.

#include<iostream>
#include<math.h>
#include<iomanip>
using namespace std;
class CTime{
—-public:
—-int Gio;
—-int Phut;
—-int Giay;
—-CTime(int, int, int);
—-void nhapTime();
—-void hienTime();
};
class CDate{
—-public:
—-int Ngay;
—- int Thang;
—-double Nam;
—-CDate(int, int, double);
—-void nhapDate();
—-void hienDate();
};
class CDate_Time: public CDate, public CTime{
public:
—-CDate_Time();
—-void nhapThongTinThoiGian();
—-void hienThongTinThoiGian();
—-CDate_Time operator+(CDate_Time);
—- CDate_Time operator-(CDate_Time);
};
CTime::CTime(int g = 0,int p = 0,int gi = 0){
—-Gio = g;
—-Phut = p;
—-Giay = gi;
}
void CTime::nhapTime(){
—-cout<<“\nNhap Gio “; cin>>Gio;
—-cout<<“\nNhap Phut “; cin>>Phut;
—-cout<<“\nNhap Giay “; cin>>Giay;
}
void CTime::hienTime(){
—-cout<<“\nGio = “<<setw(6)<<Gio;
—-cout<<“\tPhut = “<<setw(6)<<Phut;
—-cout<<“\tGiay = “<<setw(6)<<Giay;
}
CDate::CDate(int n = 0, int t = 0, double na = 0){
—-Ngay = n;
—-Thang = t;
—-Nam = na;
}
void CDate::nhapDate(){
—-cout<<“\nNhap Ngay “; cin>>Ngay;
—-cout<<“\nNhap Thang “; cin>>Thang;
—-cout<<“\nNhap Nam “; cin>>Nam;
}
void CDate::hienDate(){
—-cout<<“\nNgay = “<<setw(6)<<Ngay;
—- cout<<“\tThang = “<<setw(6)<<Thang;
—-cout<<“\tNam = “<<setw(6)<<Nam;
}
CDate_Time::CDate_Time(){
—-CTime::CTime(0,0,0);
—-
CDate::CDate(0,0,0);
}
void CDate_Time::nhapThongTinThoiGian(){
—-CTime::nhapTime();
—-CDate::nhapDate();
}
void CDate_Time::hienThongTinThoiGian(){
—-CTime::hienTime();
—- CDate::hienDate();
}
CDate_Time CDate_Time: : operator+ (CDate_Time DateTime1){
—-CDate_Time DateTime;//khai bao doi tuong lop CDate_Time
—-DateTime.Gio = DateTime1.Gio + Gio;
—- DateTime.Phut = DateTime1.Phut + Phut;
—-DateTime.Giay = DateTime1.Giay + Giay;
—- DateTime.Ngay = DateTime1.Ngay + Ngay;
—- DateTime.Thang = DateTime1.Thang + Thang;
—- DateTime.Nam = DateTime1.Nam + Nam;
—- cout<<“\n Sau khi cong hai doi tuong thoi gian ta co ket qua: “;
—- cout<<“\n”<<DateTime.Gio<<setw(6)<<“\t”<<DateTime.Phut<<setw(6)<<“\t”<<DateTime.Giay;
—-cout<<“\n”<<DateTime.Ngay<<setw(6)<<“\t”<<DateTime.Thang<<setw(6)<<“\t”<<DateTime.Nam;
—-return DateTime;
}
CDate_Time CDate_Time: : operator- (CDate_Time DateTime1){
—-CDate_Time DateTime;//khai bao doi tuong lop CDate_Time
—-DateTime.Gio = DateTime1.Gio -Gio;
—-DateTime.Phut = DateTime1.Phut – Phut;
—-DateTime.Giay = DateTime1.Giay – Giay;
—- DateTime.Ngay = DateTime1.Ngay – Ngay;
—-DateTime.Thang = DateTime1.Thang – Thang;
—-DateTime.Nam = DateTime1.Nam – Nam;
—-cout<<“\n Sau khi tru hai doi tuong thoi gian ta co ket qua: “;
—-cout<<“\n”<<DateTime.Gio<<setw(6)<<“\t”<<DateTime.Phut<<setw(6)<<“\t”<<DateTime.Giay;
—-cout<<“\n”<<DateTime.Ngay<<setw(6)<<“\t”<<DateTime.Thang<<setw(6)<<“\t”<<DateTime.Nam;
—-return DateTime;
}
int main(){
—- cout<<“————————————————\n”;
—- CDate_Time datetime1, datetime2;
—-cout<<“\nNhap cac thong tin ve thoi gian tu ban phim\n”;
—-datetime1.nhapThongTinThoiGian();
—-cout<<“\nSau day la thong ke thong tin thoi gian ban vua nhap vao\n”;
—-datetime1.hienThongTinThoiGian();
—-cout<<“\nBan hay nhap vao doi tuong thoi gian thu 2”;
—-datetime2.nhapThongTinThoiGian();
—- datetime2.operator +(datetime1);
—-datetime2 = CDate_Time();//khởi tạo lại đối tượng datetime2
—-cout<<“\nBan hay nhap vao doi tuong thoi gian thu 2”;
—-datetime2.nhapThongTinThoiGian();
—-datetime2.operator -(datetime1);
—-return 0;
}

Gửi phản hồi

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s