-
Notifications
You must be signed in to change notification settings - Fork 0
/
abstract_functions.cpp
45 lines (35 loc) · 1.05 KB
/
abstract_functions.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include <iostream>
using std::string, std::cout, std::endl;
class Value {
public:
double value = 0;
string label;
Value(double value, string label = "") {
this->value = value;
this->label = label;
}
virtual void show() = 0; // Must be implemented in derrived classes.
};
class Datum: public Value {
public:
string description;
Datum(double value, string label, string description = "") :
Value(value, label) {
this->description = description.length() ? description : this->description;
}
void show() {
cout << "Value: " << value << endl
<< "Label: " << label << endl
<< "Description: " << description << endl;
}
};
class Content: public Datum {
public:
Content(double value, string label, string description = "") : Datum(value, label, description) {
}
};
int main() {
// Value temperature(24, "Health for humans temperature in degree Celsius"); // One cannot instantiate.
Content page(666, "Page of Harry Potter book", "The satanistic ritual hidden in the book for kids. Oh noes!");
page.show();
}