-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathclass_fun.cpp
More file actions
112 lines (92 loc) · 1.94 KB
/
Copy pathclass_fun.cpp
File metadata and controls
112 lines (92 loc) · 1.94 KB
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
#ifndef _CLASS_FUN_CPP
#define _CLASS_FUN_CPP
#include <string>
#include <iostream>
#include "include/class_fun.hpp"
using namespace std;
int
stupid_area(const Polygon& p)
{
return -p.height * p.width;
}
void
Polygon::set_values(int a, int b)
{
width = a;
height = b;
}
int
Polygon ::area()
{
return 0;
}
int
Rectangle ::area()
{
return width * height;
}
int
Triangle ::area()
{
return width * height / 2;
}
string
Polygon ::get_name()
{
return "Polygon";
}
string
Rectangle ::get_name()
{
return "Rectangle";
}
string
Triangle ::get_name()
{
return "Triangle";
}
string
Polygon ::get_name_virtual()
{
return "Polygon (v)";
}
string
Rectangle ::get_name_virtual()
{
return "Rectangle (v)";
}
string
Triangle ::get_name_virtual()
{
return "Triangle (v)";
}
void
class_fun()
{
Polygon weird;
Rectangle rect;
Triangle trgl;
Polygon* ppoly1 = ▭
Polygon* ppoly2 = &trgl;
ppoly1->set_values(4, 5);
ppoly2->set_values(4, 5);
cout << "Rect area is " << rect.area() << '\n';
cout << "Trgl area is " << trgl.area() << '\n';
cout << "Rect(Poly) area is " << ppoly1->area() << '\n';
cout << "Trgl(Poly) area is " << ppoly2->area() << '\n';
cout << "Stupid rect " << stupid_area(rect) << endl;
cout << "Stupid triangle " << stupid_area(trgl) << endl;
cout << endl;
cout << "weird name " << weird.get_name() << endl;
cout << "Rect name " << rect.get_name() << endl;
cout << "Trgl name " << trgl.get_name() << endl;
cout << "Rect(pPoly) name " << ppoly1->get_name() << endl;
cout << "Trgl(pPoly) name " << ppoly2->get_name() << endl;
cout << endl;
cout << "weird name virtual " << weird.get_name_virtual() << endl;
cout << "Rect name virtual " << rect.get_name_virtual() << endl;
cout << "Trgl name virtual " << trgl.get_name_virtual() << endl;
cout << "Rect(pPoly) name virtual " << ppoly1->get_name_virtual() << endl;
cout << "Trgl(pPoly) name virtual " << ppoly2->get_name_virtual() << endl;
}
#endif