Hỏi về cách hoạt động của đoạn code Operator Overloading

mọi người có thể giải thích cách hoạt động của nó giùm em được không ạ
chẳng hạng như VD này

class MyClass {
 public:
  int var;
  MyClass() {}
  MyClass(int a)
  : var(a) { }

  MyClass operator+(MyClass &obj) {
   MyClass res;
   res.var= this->var+obj.var;
   return res; 
  }
};
int main() {
  MyClass obj1(12), obj2(55);
  MyClass res = obj1+obj2;

  cout << res.var;
}

//Outputs 67

Khái niệm overload (đang xài trong code này) rất là tự nhiên :slight_smile:

Định nghĩa một phép + trên S thỏa:

  • tồn tại e để e + a = a
  • với mọi a tồn tại a’ để a + a’ = e
  • (a + b) + c = a + (b + c)

operator+ chỉ là 1 trong những phương thức thôi, nhưng prototype của nó phải có return thì mới viết được a + b + c.

1 Like

sao hàng này
res.var= this->var+obj.var;

không là
res.var=res.var+obj.var; ạ?

Vì res không có gì cả, mới tạo mà. Và nó chỉ là biến tạm.

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?