-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathvirtual-functions-2.cpp
84 lines (71 loc) · 1.63 KB
/
virtual-functions-2.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
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
#include <iostream>
using namespace std;
class Exam
{
protected:
int rollNo;
int sheetNo;
public:
Exam() {}
Exam(int rollNo, int sheetNo)
{
this->rollNo = rollNo;
this->sheetNo = sheetNo;
}
virtual void display()
{
cout << "Roll no: " << rollNo << endl;
cout << "Sheet no: " << sheetNo << endl;
}
};
class Student : virtual public Exam
{
protected:
int visit_time;
int end_time;
public:
Student() {}
Student(int visit_time, int end_time)
{
this->visit_time = visit_time;
this->end_time = end_time;
}
Student(int rollNo, int sheetNo, int visit_time, int end_time) : Exam(rollNo, sheetNo)
{
this->visit_time = visit_time;
this->end_time = end_time;
}
virtual void display()
{
Exam::display();
cout << "Visit time: " << visit_time << endl;
cout << "end time: " << end_time << endl;
}
};
class Result : virtual public Exam, public Student
{
private:
float math_marks;
float phy_marks;
public:
Result(int rollNo, int sheetNo, int visit_time, int end_time, int math_marks, int phy_marks) : Exam(rollNo, sheetNo), Student(visit_time, end_time)
{
this->math_marks = math_marks;
this->phy_marks = phy_marks;
}
void display()
{
Student::display();
cout << "maths marks: " << math_marks << endl;
cout << "Physics marks: " << phy_marks << endl;
}
};
int main()
{
Exam e(42, 7282);
Student s(42, 7282, 12, 3);
Result r(42, 7282, 12, 3, 91, 94);
Exam *exam_ptr = &r;
exam_ptr->display();
return 0;
}