Toán tử tăng và giảm dạng tiền tố – Prefix 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 tiền tố của ++/– phải được thực hiện như một hàm toán tử không có tham số (vì nó sửa đổi đối tượng của nó trước khi nó được sử dụng), nó phải trả về một tham chiếu đến đối tượng được sửa đổi.
Ví dụ →
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
#include <iostream> using namespace std; class V { public: int vec[2]; V(int a0, int a1) { vec[0]=a0; vec[1]=a1; } V& operator++(void) { for(int i = 0; i < 2; i++) { vec[i]++; } return *this; } }; int main(void) { V v1(1, 2); ++v1; cout << "(" << v1.vec[0] << ", " << v1.vec[1] << ")" << endl; return 0; } |
Ví dụ này thực hiện nạp chồng toán tử ‘++’ dạng tiền tố, nó gây ảnh hưởng lên tất cả các thành phần của vectơ. Chương trình sẽ cho ra kết quả sau:
1 |
(2, 3) |