Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 18 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
18
Dung lượng
396,73 KB
Nội dung
L P TRÌNH HƯ NG I TƯ NG V I C++ Định nghĩa chồng toán tử lớp M C TIÊU C A BÀI NÀY GIÚP NGƯ I H C Cách nh nghĩa phép toán cho ki u d li u l p c u trúc Các toán t chuy n ki u áp d ng cho ki u d li u l p A/ NH C L I LÝ THUY T Toán t c nh nghĩa ch ng b ng cách nh nghĩa m t hàm toán t Tên hàm toán t bao g m t khoá operator theo sau ký hi u c a toán t c nh nghĩa ch ng H u h t toán t c a C++ u có th nh nghĩa ch ng Khơng th t o ký hi u phép toán m i Ph i m b o c tính nguyên thu c a toán t c nh nghĩa ch ng, ch ng h n: ưu tiên, tr t t k t h p, sô Không s d ng tham s có giá tr ng m nh nh nghĩa ch ng toán t Các toán t (), [], ->, = yêu c u hàm toán t ph i hàm thành ph n c a l p Hàm toán t có th hàm thành ph n hàm b n c a l p Khi hàm toán t hàm thành ph n, toán h ng bên trái ln i thu c l p N u tốn h ng bên trái i tư ng c a l p khác hàm tốn t tương ng ph i hàm b n Chương trình d ch khơng t bi t cách chuy n ki u gi a ki u d li u chu n ki u d li u t nh nghĩa Vì v y ngư i l p trình c n ph i mơ t tư ng minh chuy n i dư i d ng hàm thi t l p chuy n ki u hay hàm toán t chuy n ki u M t hàm toán t chuy n ki u th c hi n chuy n i t m t i tư ng thư c l p sang i tư ng thu c l p khác ho c m t i tư ng có ki u c nh nghĩa trư c Hàm thi t l p chuy n ki u có m t tham s th c hi n chuy n i t m t giá tr sang i tư ng ki u l p Toán t gán toán t hay c nh nhgiã ch ng nh t, c bi t l p có thành ph n d li u ng nh nghĩa ch ng toán t tăng, gi m m t ngôi, ph i phân bi t hai hàm toán t tư ng ng cho d ng ti n t d ng h u t B M T S LƯU Ý (Các l i thư ng g p, m t s thói quen l p trình t t ) Các l i thư ng g p T o m t toán t Thay i nh nghĩa c a toán t ki u c nh nghĩa trư c Cho r ng vi c nh nghĩa ch ng m t toán t s t ng kéo theo nh nghĩa ch ng c a toán t liên quan Quên nh nghĩa ch ng toán t gán hàm thi t l p chép cho l p có thành ph n d li u ng M t s thói quen l p trình t t S d ng tốn t nh nghĩa ch ng i u ó làm cho chương trình sáng Tránh l m d ng nh nghĩa ch ng tốn t i u ó ãn n khó ki m sốt chương trình Chú ý n tính ch t nguyên thu c a toán t c nh nghĩa ch ng Hàm thi t l p, toán t gán, hàm thi t l p chép c a m t l p thư ng i Trang 31 L P TRÌNH HƯ NG I TƯ NG V I C++ C/ BÀI T P M U Ví d 1: M t l p phân s có tốn t c ng(+) c nh nghĩa sau: class PS { public: PS(int ts=0, int ms=1); PS operator+(PS); }; Trong dòng l nh sau ây dòng sai? PS a,b,c; a=b+c;//(1) a=b+3;//(2) a=3+b;//(3) L i gi i Trong ba dịng l nh hai dịng u úng b i lúc ó ta có: (1) a=b.operator+(c) tốn t ã c nh nghĩa l p phân s (2) a=b.operator+(3) v i s t ng chuy n ki u thành phân s Dịng l nh (3) sai ta khơng có toán t c ng m t s nguyên v i m t phân s có th th c hi n c t t c ba dòng l nh tốn t c ng l p PS ph i c nh nghĩa m t hàm b n class PS { public: PS(int ts=0, int ms=1); friend PS operator+(PS); }; Khi ó l i g i s tương ng v i toán t sau: (1) a=operator+(b,c) (2) a=operator+(b,3) (3) a=operator+(3,b) Ví d 2:Chúng ta xây d ng l p s ph c v i tên l p Complex a hóa toán t + l p CT3_1.CPP #include class Complex { private: double Real,Imaginary; public: Complex(double R=0.0,double I=0.0);//Constructor mac dinh void Print();//Hien thi so phuc Complex operator + (Complex Z);//Phep cong hai so phuc Complex operator + (double R);//Phep cong mot so phuc voi mot so thuc }; 11 Complex::Complex(double R,double I) { Real = R; Imaginary = I; } Trang 32 L P TRÌNH HƯ NG I TƯ NG V I C++ void Complex::Print() { cout