01/10/2018, 09:01

Mọi người cho em hỏi về 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
rogp10 viết 11:18 ngày 01/10/2018

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

Đị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.

Ipupro viết 11:11 ngày 01/10/2018

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

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

rogp10 viết 11:09 ngày 01/10/2018

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

Bài liên quan
0