[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]; //………