Bài giảng Lập trình hướng đối tượng và C++: Chương 7

Đăng ngày | Thể loại: | Lần tải: 0 | Lần xem: 0 | Page: 3 | FileSize: M | File type: PDF
of x

Bài giảng Lập trình hướng đối tượng và C++: Chương 7. Chương 7 Tái định nghĩa tác tử cung cấp cho người học các kiến thức: Giới thiệu, tái định nghĩa bằng hàm độc lập, tái định nghĩa bằng hàm thành viên, tái định nghĩa phép gán (dấu =), tái định nghĩa tác tử xuất – nhập. Mời các bạn cùng tham khảo!. Giống những tài liệu khác được thành viên giới thiệu hoặc do tìm kiếm lại và giới thiệu lại cho các bạn với mục đích học tập , chúng tôi không thu phí từ bạn đọc ,nếu phát hiện nội dung phi phạm bản quyền hoặc vi phạm pháp luật xin thông báo cho website ,Ngoài giáo án bài giảng này, bạn có thể download Download tài liệu,đề thi,mẫu văn bản miễn phí phục vụ nghiên cứu Có tài liệu download thiếu font chữ không hiển thị đúng, nguyên nhân máy tính bạn không hỗ trợ font củ, bạn download các font .vntime củ về cài sẽ xem được.

https://tailieumienphi.vn/doc/bai-giang-lap-trinh-huong-doi-tuong-va-c-chuong-7-keubuq.html

Nội dung


N i dung • Gi i thi u Chương 7 • Tái ñ nh nghĩa b ng hàm ñ c l p TÁI ð NH NGHĨA TÁC T • Tái ñ nh nghĩa b ng hàm thành viên • Tái ñ nh nghĩa phép gán (d u =) • Tái ñ nh nghĩa tác t xu t – nh p 1 Gi i thi u • T i sao c n tái ñ nh nghĩa tác t ? 2 Gi i thi u (tt) tt) • Cơ ch class PhanSo { int tu, mau; public: PhanSo(int=0, int=1){…} void InPs() {…} int LonHon (PhanSo x) { return (tu*x.mau>mau*x.tu);} PhanSo Cong(PhanSo x) {…} }; void main() { PhanSo a(4,9), b(3,7); if(b.LonHon(a)) cout<<“PS b lon hon a”; PhanSo c = b.Cong(a); a.InPs(); cout<< “ + ”; b.InPs(); cout<< “ = ”; c.InPs(); } Ta c n có cách vi t các phép toán theo d ng g n gũi hơn – C++ cho phép ta tái ñ nh nghĩa các tác t (phép toán). – Vi c tái ñ nh nghĩa tác t th c hi n tương t như tái ñ nh nghĩa hàm. – Cú pháp: if ( b > a ) operator ( các ñ i s ) Phan So c = b + a cout << a << “ + ” << b << “ = ” << c; 3 – Có 2 cách dùng ñ tái ñ nh nghĩa tác t : • Dùng hàm ñ c l p • Dùng hàm thành viên 4 Gi i thi u (tt) tt) Tái ñ nh nghĩa b ng hàm ñ c l p • Các tác t có th ñ nh nghĩa • Thông thư ng nên khai báo hàm ñ c l p là hàm b n c a l p ñ có th truy c p các thành ph n private c a l p. • Tác t sau khi ñ nh nghĩa không có tính giao hoán. – S h c: +, -, *, /, … Tăng gi m: ++, --, +=, *=, … – So sánh: <, >, >=, <=, ==, != – Phép gán: = – <<, >>, [], new, delete, … 5 class PhanSo { int tu,mau; public: ... friend PhanSo operator + (PhanSo,int); }; PhanSo operator + (PhanSo x, int n) { return PhanSo(x.tu + x.mau*n, x.mau);} void main() { PhanSo a(2,5); Ph i ñ nh nghĩa thêm tác t : PhanSo b = operator +(a,10); PhanSo operator + (int , PhanSo); PhanSo c = a + 20 ; PhanSo d = 20 + a ; // Sai 6 } Tái ñ nh nghĩa b ng hàm thành viên Tái ñ nh nghĩa phép gán (d u =) • ð i s ñ u tiên c a tác t chính là ñ i tư ng ñang xét. => Hàm s có s lư ng ñ i s ít hơn so v i hàm ñ c l p. • C++ m c nhiên s có phép gán (d u = ) b ng cách gán tương ng t ng thu c tính gi a 2 ñ i tư ng. • Khi thành ph n d li u có con tr => ph i ñ nh nghĩa “=”. • Phép gán ph i ñ nh nghĩa b ng hàm thành viên. class PhanSo { int tu,mau; public: ... PhanSo operator + (int); }; PhanSo PhanSo:: ::operator + (int n) { return PhanSo(tu + mau*n, mau);} void main() { Không th ñ nh nghĩa thêm PhanSo a(2,5); tác t b ng hàm thành viên PhanSo b = a.operator +(10); PhanSo c = a + 20 ; cho trư ng h p này PhanSo d = 20 + a ; // Sai 7 } class Stack { float *ds; int soluong, vitri; public: ... void operator=(const Stack& s){ soluong = s.soluong; vitri = s.vitri; delete[] ds; ds = new float[soluong]; for(int i=0; i>), xu t (<<) ph i ñư c ñ nh nghĩa theo d ng hàm ñ c l p và thư ng khai báo là friend. • Thao tác v i các dòng (stream) xu t/nh p chu n như: – Bàn phím, t p tin dùng ñ ñ c, … (istream) – Màn hình, t p tin dùng ñ ghi, … (ostream) class SinhVien { char mssv[9]; char* hoten; int namsinh; float diemtb; public: ... SinhVien& operator=(const SinhVien& a){ strcpy(mssv,a.mssv); delete[] hoten; hoten = strdup(a.hoten); namsinh = a.namsinh; diemtb = a.diemtb; return *this; } }; void main(){ SinhVien a, b, c; a.Nhap(); c = b = a; //phép gán SinhVien d=a; // hxdsc } Tái ñ nh nghĩa tác t xu t – nh p • class Diem Ví d 1 Ph i copy d li u Xóa vùng nh cũ, c p vùng nh m i và copy d li u 9 { int x, y; public : … friend ostream& operator << (ostream& os, Diem p); friend istream& operator >> (istream& is, Diem& p); }; ostream& operator << (ostream& os, Diem p) { os << “(” << p.x << “,” << p.y <<“)”; return os; } istream& operator >> (istream& is, Diem& p) { cout << “Nhap hoanh do: ”; is >> p.x; cout << “Nhap tung do: ”; is >> p.y; return is;} void main() { Diem a(2,10), b; cout<< “Gia tri diem A la: ” << a <>b; 11 cout<< “Gia tri diem B la: ” << b <> (istream& }; Tái ñ nh nghĩa tác t os, PhanSo p); is, PhanSo& p); 10 xu t – nh p • Ví d 2 class SinhVien { char mssv[10], *hoten; float diemtb; public : … friend ostream& operator << (ostream& os, SinhVien s) { os<> (istream& is, SinhVien& s){ is.getline(s.mssv,9); is.getline(s.hoten,49); is >> s.diemtb; return is; } }; #include void main() { SinhVien ptcang; cout<<“Nhap thong tin: ”; cin >> ptcang; cout << “Sinh vien A: ”; cout << ptcang ; ofstream f1(“MyFile.txt”); f1<>a1; cout << “Trong file: ”; cout <

Tài liệu liên quan


Xem thêm