* Write a program to overload (++) operator. #+ATTR_LATEX: :options frame=single,breaklines=true #+begin_src cpp :tangle 19.cpp :results output :exports both :wrap src text #include using namespace std; class Foo { int x; public: Foo(int _x) { x = _x; }; Foo &operator++(); int get() { return x; } }; Foo &Foo::operator++() { x++; return *this; } int main() { Foo bar = Foo(-3); ++bar; cout << bar.get(); } #+end_src #+LATEX: \clearpage * Write a program to overload + operator. #+ATTR_LATEX: :options frame=single,breaklines=true #+begin_src cpp :tangle 20.cpp :results output :exports both :wrap src text #include using namespace std; class Foo { int x; public: Foo(int _x) { x = _x; }; Foo operator+(Foo); int get() { return x; } }; Foo Foo::operator+(Foo bar) { return Foo(x + bar.get()); } int main() { Foo bar = Foo(-3); Foo baz = Foo(8); cout << (bar + baz).get(); } #+end_src #+LATEX: \clearpage * Write a program to overload * operator. #+ATTR_LATEX: :options frame=single,breaklines=true #+begin_src cpp :tangle 21.cpp :results output :exports both :wrap src text #include using namespace std; class Foo { int x; public: Foo(int _x) { x = _x; }; Foo operator*(Foo); int get() { return x; } }; Foo Foo::operator*(Foo bar) { return Foo(x * bar.get()); } int main() { Foo bar = Foo(-3); Foo baz = Foo(8); cout << (bar * baz).get(); } #+end_src