[r]
(1)TÁI Đ NH NGHĨAỊ
TÁI Đ NH NGHĨAỊ
(OVERLOADING)
(OVERLOADING)
B môn H Th ng Máy Tính Truy n Thơngộ ệ ố ề
Khoa Công Ngh Thông Tin Truy n Thôngệ ề
(2)N i dungộ N i dungộ
Tái đ nh nghĩa hàm.ị Tái đ nh nghĩa toán t ị ử Chuy n đ i ki u.ể ổ ể
Tái đ nh nghĩa toán t xu t (<<)– nh p (>>)ị ử ấ ậ Tái đ nh nghĩa toán t [], toán t ()ị ử ử
Kh i t o ng m đ nh - Gán ng m đ nh.ở ạ ầ ị ầ ị Tái đ nh nghĩa toán t ++ ị ử
(3)Tái đ nh nghĩa hàmị Tái đ nh nghĩa hàmị
Đ nh nghĩa hàm tênị Đ i s ph i khác nhau:ố ố ả
class TimeTime { //
long GetTime (void); // s giây tính t n a đêmố
void GetTime (int &hours, int &minutes, int &seconds); };
S lố ượng Th tứ ự
Ki uể
Có th dùng đ i s m c đ nh.ể ố ố ặ ị
void main() { int h, m, s;
long t = GetTime(); // G i hàm ???ọ
GetTime(h, m, s); // G i hàm ???ọ
(4)Tái đ nh nghĩa toán tị ử Tái đ nh nghĩa toán tị ử
Đ nh nghĩa phép toán đ i tị ố ượng. Các phép tốn có th tái đ nh nghĩa:ể ị
Đ n ơ h ngạ
+ * ! ~ & ++ () > >* new delete
Nh ị h ngạ
+ * / % & | ^ << >> = += = /= %= &= |= ^= <<= >>=
== != < > <= >= && || [] () ,
Các phép tốn khơng th tái đ nh nghĩa:ể ị
(5)Tái đ nh nghĩa toán t (tt)ị ử Tái đ nh nghĩa toán t (tt)ị ử
B ng hàm thành viênằ :
class PointPoint { public:
Point (int x, int y) { Point::x = x; Point::y = y; }
Point operator + (Point &p) { return Point(x + p.x,y + p.y); } Point operator - (Point &p) { return Point(x - p.x, y - p.y); } private:
int x, y; };
void main() {
Point p1(10,20), p2(10,20);
Point p3 = p1 + p2; Point p4 = p1 - p2;
Point p5 = p3.operator + (p4); Point p6 = p3.operator – (p4); };
Có tham số
(6)Tái đ nh nghĩa toán t ++ & ị ử Tái đ nh nghĩa toán t ++ & ị ử
Toán t ++ (ho c toán t ) có lo i:ử ặ ử ạ
Ti n t : ề ố ++n H u t : ậ ố n++
class PhanSoPhanSo {
int tuso, mau so; public:
// …
PhanSo(int=0 , int =1);
friend PhanSo operator ++ (PhanSo&); friend PhanSo operator ++ (PhanSo&, int);
};
PhanSo operator ++ (PhanSo& p) {
return (p = PhanSo(tuso+mauso, mauso)); }
PhanSo operator ++ (PhanSo& p, int x) {
PhanSo p2 = PhanSo(tuso+mauso, mauso); return p2;
void main() {
PhanSo p1(3,4), p2; cout<< p1++;
cout<<++p2;
cout<<++(p1++) + (++p2)++; }
K t qu ế ả
(7)Tái đ nh nghĩa new & deleteị Tái đ nh nghĩa new & deleteị
Hàm new delete m c đ nh c a ngôn ng :ặ ị ủ ữ
N u đ i tế ố ượng kích thước nh , có th s gây ỏ ể ẽ
nhi u kh i nh => ch m.ề ố ỏ ậ
Không đáng k đ i tể ố ượng có kích thướ ớc l n.
=> Tốn t new delete đử ược tái đ nh nghĩa.ị
Đ nh nghĩa theo d ng hàm thành viên:ị ạ
class PointPoint { public: //
void* operator new (size_t bytes);
void operator delete (void *ptr, size_t bytes); private:
int xVal, yVal;
void main() {
Point *p = new Point(10,20); Point *ds = new Point[30]; //………