You are on page 1of 3

Chap 3 : Đa năng hóa toán tử ++

I. Một chút
_ ++ là toán tử của C, và đương nhiên nó cũng là của C++

_ Tại sao lại là C++ : nếu bạn nhìn từ C++ bạn sẽ thấy 1 điều "trước hết là C đã, sau đó có thêm
những cái mới được cộng vào"

_ Đa năng hóa toán tử này cũng hơi loằng ngoằng xíu

_ Toán tử này có độ ưu tiên cao hơn các toán tử thông thường khác

II. Bản chất của nó


Thật ra có 2 toán tử ++ khác nhau trong C, đó là tiền tố (prefix) và hậu tố (postfix)
sự khác nhau giữa tiền tố và hậu tố là gì ? Tiền tố thì là toán tử 1 ngôi, hậu tố là toán tử 2 ngôi
++n : tiền tố thì tăng n lên và trả về n
n++ : hậu tố thì tăng n lên và trả về n-1

Làm sao tôi có thể phân biệt được đâu là tiền tố, đâu là hậu tố, thằng nào 1 ngôi, thằng nào 2
ngôi, loằng ngoằng quá đi
vâng, điều này hoàn toàn đơn giản nếu bạn nhớ quy tắc tôi đã đưa ra tại bài viết tổng hợp
Code:
Toán tử 1 ngôi luôn luôn đứng trước toán hạng

_ 2 toán tử này có độ ưu tiên rất cao

Tiền tố, 1 ngôi


==> phép đa năng hóa không bắt buộc phải trả về
==> phép đa năng hóa bắt buộc phải không có tham số nếu là phương thức của lớp
==> phép đa năng hóa bắt buộc phải có 1 tham số nếu là global function 

Hậu tố, 2 ngôi


==> phép đa năng hóa không bắt buộc phải trả về
==> phép đa năng hóa bắt buộc phải có 1 tham số dạng int nếu là phương thức của lớp, tuy nhiên
tham số này ko cần có tên
==> phép đa năng hóa bắt buộc phải có 2 tham số nếu là global function , tham số thứ 2 bắt buộc
phải ở dạng int, ko cần có tên
==> các tham số int nói trên mặc định khi gọi sẽ được truyền là 0, ở VC++6 thì ko thể truyền giá
trị vào tham số này, nhưng hình như trên 2010 thì có thể

III. Code đa năng hóa mẫu


C++ Code:
Select All | Show/Hide
1. class phanso
2. {
3. private:
4.     int tu;
5.     int mau;
6. public:
7.     phanso():tu(1),mau(3){}
8.  
9.   
10.     ///* tien to phuong thuc
11.     phanso operator++()
12.     {
13.         tu+=mau;
14.         return *this;
15.     }
16.   
17.  
18.     /* tien to ham ban
19.     friend void operator++(phanso &a)
20.   {
21.         a.tu+=a.mau;
22.     
23.     } */
24.  
25.  
26.     /* hau to
27.     void operator++(int)
28.   {
29.         phanso x(*this);
30.         tu+=mau;
31.         return x;
32.     } */
33.  
34.  
35.   
36.     phanso operator++(int a)
37.     {
38.         phanso x(*this);
39.         tu+=a*mau;
40.         return x;
41.     }
42.  
43.  
44.     /*hau to friend
45.     friend phanso operator++(phanso &a,int b)
46.   {
47.         phanso x(a);
48.         a.tu+=a.mau;
49.         return x;
50.   }
51.     */
52. };
53.  
54. void main()
55. {
56.     phanso x;
57.     x++;
58.     x++;
59.     ++x;
60.  
61.  
62. }

You might also like