<span class='text_page_counter'>(1)</span><div class='page_container' data-page=1>
<b>N</b>
<b>GƠN</b>
<b>NG</b>
<b>Ữ</b>
<b>L</b>
<b>Ậ</b>
<b>P</b>
<b>TRÌNH</b>
<b>Bài 6: </b>
<b>Nạp Chồng Toán Tử </b>
<b>và K</b>
<b>ế</b>
<b> Th</b>
<b>ừ</b>
<b>a </b>
<b>Giảng viên: Lê Nguyễn Tuấn Thành </b>
<b>Email: </b>
<b>Bộ Môn Công Nghệ Phần Mềm – Khoa CNTT </b>
</div>
<span class='text_page_counter'>(2)</span><div class='page_container' data-page=2>
N
Ộ
I
DUNG
N
ạ
p ch
ồ
ng toán t
ử
(Operator Overloading)
và Hàm b
ạ
n (Friend Functions)
K
ế
th
ừ
a (Inheritance)
<b>2 </b>
</div>
<span class='text_page_counter'>(3)</span><div class='page_container' data-page=3>
<b>1. N</b>
<b>Ạ</b>
<b>P</b>
<b>CH</b>
<b>Ồ</b>
<b>NG</b>
<b>TOÁN</b>
<b>T</b>
<b>Ử</b>
<b> </b>
<b>VÀ</b>
<b>HÀM</b>
<b>B</b>
<b>Ạ</b>
<b>N</b>
</div>
<span class='text_page_counter'>(4)</span><div class='page_container' data-page=4>
M
Ụ
C
TIÊU
N
ạ
p ch
ồ
ng toán t
ử
c
ơ
b
ả
n
Toán t
ử
hai ngơi (binary operators)
Tốn t
ử
m
ộ
t ngơi (unary operators)
N
ạ
p ch
ồ
ng b
ằ
ng hàm thành viên
Hàm b
ạ
n và l
ớ
p b
ạ
n
</div>
<span class='text_page_counter'>(5)</span><div class='page_container' data-page=5></div>
<span class='text_page_counter'>(6)</span><div class='page_container' data-page=6>
G
I
Ớ
I
THI
Ệ
U
N
Ạ
P
CH
Ồ
NG
TỐN
T
Ử
Nh
ữ
ng tốn t
ử
nh
ư
<i><b>+,-, %, ==</b></i>
etc. th
ự
c ra là
nh
ữ
ng hàm!
Các hàm đ
ặ
c bi
ệ
t này đ
ượ
c g
ọ
i v
ớ
i cú pháp khác
so v
ớ
i cách g
ọ
i hàm thông th
ườ
ng
Gọi hàm thơng thường:
<i>Tên_Hàm (Danh_Sách_Đối_Số) </i>
Với tốn tử: ví dụ, x + 7, “+” là một toán tử 2 ngơi
(binary operator) với x, 7 là 2 tốn hạng (operands)
Th
ử
vi
ế
t theo cách g
ọ
i hàm thông th
ườ
ng:
<i>+(x,7) </i>
“+” là tên hàm
x, 7 là tham số của hàm
</div>
<span class='text_page_counter'>(7)</span><div class='page_container' data-page=7>
T
Ạ
I
SAO
DÙNG
N
Ạ
P
CH
Ồ
NG
TỐN
T
Ử
?
Nh
ữ
ng tốn t
ử
đ
ượ
c xây d
ự
ng s
ẵ
n (built-in
operators)
Ví dụ, <i>+, -, = , %, ==, /, * </i>
Đã thao tác được với các kiểu dựng sẵn của C++ (built-in
types)
Nh
ư
ng n
ế
u chúng ta mu
ố
n th
ự
c hi
ệ
n phép + v
ớ
i 2
đ
ố
i t
ượ
ng c
ủ
a l
ớ
p SinhVien ?, gi
ố
ng nh
ư
:
<i>sinh_vien1 + sinh_vien2;</i>
<b>Chúng ta có th</b>
<b>ể</b>
<b> n</b>
<b>ạ</b>
<b>p ch</b>
<b>ồ</b>
<b>ng nh</b>
<b>ữ</b>
<b>ng toán t</b>
<b>ử</b>
<b>này! </b>
Để thao tác với kiểu của chúng ta!
</div>
<span class='text_page_counter'>(8)</span><div class='page_container' data-page=8>
C
Ơ
B
Ả
N
V
Ề
N
Ạ
P
CH
Ồ
NG
N
ạ
p ch
ồ
ng toán t
ử
Tương tự như với nạp chồng hàm
Tốn tử bản thân nó là tên của hàm
Ví d
ụ
khai báo
<i>const Money operator + (const Money& amount1, </i>
<i> const Money& amount2); </i>
Nạp chồng toán tử + với toán hạng là đối tượng kiểu
Money
Giá trị trả lại là một kiểu Money
Mục đích: cho phép thực hiện phép + trên hai đối
tượng của lớp Money
</div>
<span class='text_page_counter'>(9)</span><div class='page_container' data-page=9>
N
Ạ
P
CH
Ồ
NG
“+”
<i> const Money operator </i>
<i>+</i>
<i> (const Money& amount1, </i>
<i> const Money& amount2); </i>
Chú ý: hàm nạp chồng tốn tử “+” này <b>khơng phải</b>
hàm thành viên của lớp Money
Định nghĩa, cài đặt của hàm này phức tạp hơn so với
phép cộng thông thường (phải tính đến biến thành
viên, kiểm tra giá trị âm/dương, …)
</div>
<span class='text_page_counter'>(10)</span><div class='page_container' data-page=10>
V
Í
D
Ụ
Đ
Ị
NH
NGHĨA
N
Ạ
P
CH
Ồ
NG
TOÁN
T
Ử
“+”
CHO
L
Ớ
P
MONEY
</div>
<!--links-->