forked from natto1784/ooplab
122
lab9/file.org
Normal file
122
lab9/file.org
Normal file
@@ -0,0 +1,122 @@
|
||||
* 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 <iostream>
|
||||
using namespace std;
|
||||
|
||||
template <typename T,
|
||||
typename = enable_if_t<std::is_arithmetic<T>::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<float> 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 <iostream>
|
||||
using namespace std;
|
||||
|
||||
template <typename T,
|
||||
typename = std::enable_if_t<std::is_arithmetic<T>::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<float> 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 <fstream>
|
||||
#include <iostream>
|
||||
|
||||
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
|
Reference in New Issue
Block a user