1. Trang chủ
  2. » Cao đẳng - Đại học

Lập trình hướng đối tượng: Overloading

7 6 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Nội dung

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

Ngày đăng: 09/03/2021, 05:33