// compile with: g++ hello.cpp #include<iostream> #include<string> #include<vector> using namespace std; // class is like struct... but // - classes have methods - functions that run on the object // - classes can make their data private class myData { private: int x, y; public: myData(int n1, int n2) { x = n1; y = n2; } myData() { x = y = 0; } int getX() const { return x; } void setX(int n) { x = n; } int getY() const { return y; } void setY(int n) { y = n; } myData operator+(const myData ¶m) { myData temp; temp.x = x + param.x; temp.y = y + param.y; return temp; } myData& operator=(const myData ¶m) { x = param.x; y = param.y; return *this; } myData *pointerToMe() { return this; } }; ostream &operator<<(ostream &os, myData const &m) { return os << "(" << m.getX() << ", " << m.getY() << ")"; } int main(int argc, char * argv[]) { cout << "x: "; int x; cin >> x; cout << "y: "; int y; cin >> y; myData m(x, y); // note - we have overloaded the ostream<< operator for myData // it gets run something like operator<<(cout, m); cout << m << endl; myData m2 = m + m; cout << m2 << endl; cout << "&m = " << &m << endl; cout << "&m2 = " << &m2 << endl; cout << "m.pointerToMe = " << m.pointerToMe() << endl; cout << "m2.pointerToMe = " << m2.pointerToMe() << endl; return 0; }