ngÔn ngỮ lẬp trÌnh nạp chồng toán...

Post on 07-Feb-2020

3 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

16/04/2018 Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN 1

NGÔN NGỮ LẬP TRÌNH

Nạp chồng toán tử

NỘI DUNG

• Tại sao phải nạp chồng toán tử?

• Các cách nạp chồng toán tử

• Nạp chồng các toán tử <<, >>

16/04/2018 Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN 2

Tại sao phải

nạp chồng toán tử?

Xét 2 ví dụ sau

16/04/2018 Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN 4

Kết luận

+, -, *, /, %,

Là những toán tử đã được xây dựng sẵn

Được dùng cho các kiểu cơ bản trong C/C++

Nhưng chưa dùng được cho các kiểu người dùng

định nghĩa

=> Muốn dùng thì phải nạp chồng

16/04/2018 Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN 5

Các cách nạp chồng toán tử

Nạp chồng ngoài lớp

Hàm nạp chồng không phải là hàm thành viên của

lớp

Nạp chồng trong lớp

Hàm nạp chồng là hàm thành viên của lớp

Nạp chồng ngoài lớp

Nạp chồng ngoài lớp

Cú pháp nạp chồng toán tử 1 ngôi: kieutrave operator toántử(kieutoanhang toanhang)

Cú pháp nạp chồng toán tử 2 ngôi: kieutrave operator toántử(kieutoanhang toanhang1, kieutoanhang toanhang2)

Trong đó: operator: là từ khóa nạp chồng toán tử

Toántử: là các ký hiệu +, -, *, /, %

16/04/2018 Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN 8

Xét ví dụ

16/04/2018 Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN 9

Vấn đề

Trong hàm nạp chồng sử dụng đến các thành

phần private của đối tượng

Hàm nạp chồng không thuộc lớp => không

truy cập vào các thành phần private được

16/04/2018 Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN 10

Giải pháp 1

Phải truy cập qua các hàm thành viên của lớp

16/04/2018 Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN 11

Ví dụ cho giải pháp 1

16/04/2018 Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN 12

Giải pháp 2

Sử dụng hàm bạn

Hàm bạn là hàm có thể truy cập được vào các

thành phần private của lớp

Phải khai báo hàm bạn trong lớp

Phải có từ khóa friend ở đầu khai báo hàm

16/04/2018 Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN 13

Ví dụ cho giải pháp 2

16/04/2018 Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN 14

Nạp chồng trong lớp

Nạp chồng trong lớp

Cú pháp nạp chồng toán tử 1 ngôi:

kieutrave operator toántử()

Cú pháp nạp chồng toán tử 2 ngôi:

kieutrave operator toántử(kieutoanhang toanhang)

Trong đó:

operator: là từ khóa nạp chồng toán tử

Toántử: là các ký hiệu +, -, *, /, %

Ví dụ

16/04/2018 Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN 17

Sự khác biệt giữa 2 cách nạp chồng

Nạp chồng trong lớp có:

Số lượng tham số của hàm ít hơn

Vì khi nạp chồng trong lớp, toán hạng 1 được hiểu

chính là đối tượng gọi hàm

16/04/2018 Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN 18

Bài tập Xây dựng một lớp phân số (đặt tên là PhanSo) bao gồm:

Các thành phần dữ liệu tử số và mẫu số

Ít nhất hai hàm tạo: hàm tạo mặc định và hàm tạo có tham số

Phương thức nhập và hiển thị dữ liệu cho phân số

Xây dựng phương thức nạp chồng toán tử +, - , *, /

Viết một hàm main, khai báo và nhập dữ liệu cho 3 phân số ps1, ps2, ps3. Tính toán và hiển thị các kết quả sau: ps4 = ps1 + ps2 - ps3

ps4 = ps1 * ps2 / ps3

ps4 = (ps1+1) + ps2/2 – ps3

16/04/2018 Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN 19

Nạp chồng toán tử

nhập (>>), xuất(<<)

Mục đích

16/04/2018 Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN 21

Thay vì phải viết:

Ta có thể viết:

Cách làm

Khai báo nạp chồng toán tử << và >> là hàm

bạn trong lớp PhanSo:

16/04/2018 Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN 22

Cách làm

Định nghĩa

2 hàm này

như sau:

16/04/2018 Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN 23

top related