30/09/2018, 17:58
Toán tử operator++, Tại sao phải là ++s thì nó mới chạy,còn s++ thì không được
Giả sử mình có đoạn code
#include <iostream>
using namespace std;
class Sample
{
int point;
public:
Sample()
{
point = 5;
}
Sample operator++()
{
point++;
return *this;
}
void Display()
{
cout << point << endl;
}
};
int main()
{
Sample s;
++s;
// s++;
s.Display();
}
Tại sao phải là ++s thì nó mới chạy,còn s++ thì không được.
Bài liên quan
Để định nghĩa toán tử postfix, bạn phải viết thêm một hàm nữa
http://en.cppreference.com/w/cpp/language/operators
Hai toán tử này là khác nhau và cách thức hoạt động không giống nhau nha bạn. Giờ mới hiểu tại sao Java quyết định không hỗ trợ operator overloading.
Toán tử ++ và –
Đây là hai toán tử một ngôi, hai toán tử này tùy vào vị trí (tiền tố hoặc hậu tố) mà sẽ đưa ra các kết quả khác nhau:
Tiền tố (đứng ngay trước tên biến): tăng (nếu là ++) hoặc giảm (nếu là --) giá trị của biến lên 1 rồi mới thực hiện tính toán trong biểu thức.
Hậu tố (đứng ngay sau tên biến): thực hiện tính toán biểu thức rồi mới tăng (nếu là ++) hoặc giảm (nếu là --) giá trị của biến lên một.
Ta lấy ví dụ sau:
Ta có kết quả xuất ra màn hình như sau: