以下の場合で MyClass Add(MyClass ob)がdataを用いることができる理由がよくわかりません。この理由を教えていただけないでしょうか。
gcc version 3.3 20030304 (Apple Computer, Inc. build 1495)です。

#include <iostream>

class MyClass {
int data;
public:
MyClass(int d) { data = d; }
MyClass Add(MyClass ob);
void Display() { std::cout << "data : " << data << std::endl; }
};

MyClass MyClass::Add(MyClass ob)
{
data += ob.data;
return *this;
}

int main()
{
MyClass Obj1(10), Obj2(15);

Obj1.Add(Obj2);

Obj1.Display();

return 0;
}