Toán tử tăng và giảm dạng hậu tố – Postfix increment and decrement operators
Toán tử | ++ — |
Có thể được thực hiện như là một hàm toàn cục không ? | Không |
Có thể được thực hiện như là một hàm thành việc của lớp không ? | Có |
Kiểu dữ liệu trả về | Tham chiếu đến đối tượng nằm bên trái của toán tử (đóng vái trò l-value) |
Dạng hậu tố của ++ /– phải được thực hiện như là một một hàm toán tử một tham số, và vì nó cung cấp một đối tượng trước khi đối tượng đó bị ảnh hưởng bởi sửa đổi nên nó phải trả lại một bản sao của các đối tượng chưa sửa đổi.
Sự hiện diện của tham số int (tham số giả) là đặc điểm duy nhất cho phép trình biên dịch phân biệt giữa các toán tử tiền tố và hậu tố.
Chương trình này →
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
#include <iostream> using namespace std; class V { public: int vec[2]; V(int a0, int a1) { vec[0]=a0; vec[1]=a1; } V operator++(int none) { V v(vec[0],vec[1]); for(int i = 0; i < 2; i++) { ++vec[i] } return v; } }; int main(void) { V v1(2, 3); v1++; cout << "(" << v1.vec[0] << ", " << v1.vec[1] << ")" << endl; return 0; } |
sẽ output ra dòng text sau:
1 |
(3, 4) |