* Write a program to illustrate how to define and declare a class template for reading two data items from the keyboard and to find their sum. #+ATTR_LATEX: :options frame=single,breaklines=true #+begin_src cpp :tangle 25.cpp :wrap src text #include using namespace std; template ::value, T>> class Foo { T x, y; public: Foo() { cout << "x: "; cin >> x; cout << "y: "; cin >> y; } T sum() { return x + y; }; }; int main() { Foo bar; cout << bar.sum(); return 0; } #+end_src #+begin_src text x: 4.3 y: 9.1 13.4 #+end_src #+LATEX: \clearpage * Write a program to demonstrate the use of special functions, constructor and destructor in the class template. The program is used to find the biggest of two entered numbers. #+ATTR_LATEX: :options frame=single,breaklines=true #+begin_src cpp :tangle 26.cpp :wrap src text #include using namespace std; template ::value, T>> class Foo { T x, y; public: Foo() { cout << "x: "; cin >> x; cout << "y: "; cin >> y; } ~Foo() { cout << "Destructor called, nothing to do here."; } T mx() { return (x > y ? x : y); }; }; int main() { Foo bar; cout << bar.mx() << endl; return 0; } #+end_src #+begin_src text x: 3.4 y: 9.1 9.1 Destructor called, nothing to do here. #+end_src #+LATEX: \clearpage * Write a program to illustrate how template functions can be overloaded. #+ATTR_LATEX: :options frame=single,breaklines=true #+begin_src cpp :tangle 27.cpp :wrap src text #include #include using namespace std; const string FILE_PATH = "./27.out"; int main() { string line; cout << "Running program till the string \"EOH\" is received via stdin" << endl; ofstream file(FILE_PATH); file.close(); file.open(FILE_PATH, ios_base::app); while (getline(cin, line)) { if (line == "EOH") break; file << line << endl; } return 0; } #+end_src #+begin_src text Running program till the string "EOH" is received via stdin i have a flayed dismembered corpse in front of my lawn EOH #+end_src