Commit d4e88d176a37ae4d4a38b25a674d754e347ef360
1 parent
737eb743
Added some lecture 10 examples
Showing
5 changed files
with
201 additions
and
0 deletions
examples10/link.cpp
0 → 100644
1 | +#include <iostream> | ||
2 | +using namespace std; | ||
3 | + | ||
4 | +class Link | ||
5 | +{ | ||
6 | +public: | ||
7 | + Link* next; | ||
8 | + virtual void Print() = 0; | ||
9 | +}; | ||
10 | + | ||
11 | +class Displayed : public Link | ||
12 | +{ | ||
13 | +string name; | ||
14 | +public: | ||
15 | + Displayed(string n): name(n) {}; | ||
16 | + void Print() override { cout << name << endl; } | ||
17 | +; | ||
18 | +}; | ||
19 | + | ||
20 | +class Task : public Link | ||
21 | +{ | ||
22 | +string name; | ||
23 | +public: | ||
24 | + Task(string n): name(n) {}; | ||
25 | + void Print() override { cout << name << endl; } | ||
26 | +; | ||
27 | +}; | ||
28 | + | ||
29 | + | ||
30 | +class Satellite: public Task, public Displayed | ||
31 | +{ | ||
32 | + public: | ||
33 | + Satellite(string n): Task("Task:" + n), Displayed("Displayed:" + n) {}; | ||
34 | + void Print() override { Task::Print(); Displayed::Print();}; | ||
35 | +}; | ||
36 | + | ||
37 | +Link* insert(Link* list, Link* node) | ||
38 | +{ | ||
39 | + node->next = list; | ||
40 | + return node; | ||
41 | +} | ||
42 | + | ||
43 | + | ||
44 | +int main() | ||
45 | +{ | ||
46 | +Link* displayedList = NULL; | ||
47 | +displayedList = insert(displayedList, new Displayed("a")); | ||
48 | +displayedList = insert(displayedList, new Displayed("b")); | ||
49 | + | ||
50 | +Satellite* s = new Satellite("e"); | ||
51 | +Displayed* sd = s; | ||
52 | + | ||
53 | +displayedList = insert(displayedList, sd); | ||
54 | + | ||
55 | +Link* taskList = NULL; | ||
56 | +taskList = insert(taskList, new Task("c")); | ||
57 | +taskList = insert(taskList, new Task("d")); | ||
58 | + | ||
59 | +Task* st = s; | ||
60 | +taskList = insert(taskList, st); | ||
61 | + | ||
62 | +Link* iterator = displayedList; | ||
63 | + | ||
64 | +while(iterator) | ||
65 | +{ | ||
66 | + iterator->Print(); | ||
67 | + iterator=iterator->next; | ||
68 | +} | ||
69 | + | ||
70 | +iterator = taskList; | ||
71 | + | ||
72 | +while(iterator) | ||
73 | +{ | ||
74 | + iterator->Print(); | ||
75 | + iterator=iterator->next; | ||
76 | +} | ||
77 | + | ||
78 | + | ||
79 | +} | ||
80 | + | ||
81 | + | ||
82 | + |
examples10/privinh.cpp
0 → 100644
1 | +class A | ||
2 | +{ | ||
3 | + public: | ||
4 | + int a; | ||
5 | +}; | ||
6 | + | ||
7 | +class B: public A | ||
8 | +{ | ||
9 | + public: | ||
10 | + int b; | ||
11 | +}; | ||
12 | + | ||
13 | +class C: private A | ||
14 | +{ | ||
15 | + public: | ||
16 | + int c; | ||
17 | + void fun() | ||
18 | + { | ||
19 | + a = 15; | ||
20 | + }; | ||
21 | +}; | ||
22 | + | ||
23 | +int main() | ||
24 | +{ | ||
25 | + A a; | ||
26 | + B b; | ||
27 | + C c; | ||
28 | + | ||
29 | + a.a = 17; | ||
30 | + b.a = 17; | ||
31 | + //c.a = 17; | ||
32 | + | ||
33 | + A* aptr = &b; | ||
34 | + A* aptr2 = &c; | ||
35 | + aptr2->a = 17; | ||
36 | + | ||
37 | +} |
examples10/ptrconv.cpp
0 → 100644
examples10/ptrconv2.cpp
0 → 100644
1 | +class A { | ||
2 | +public: | ||
3 | + int a; | ||
4 | +}; | ||
5 | + | ||
6 | +class B : virtual public A { | ||
7 | + int b; | ||
8 | +}; | ||
9 | + | ||
10 | +class C : virtual public A { | ||
11 | + int c; | ||
12 | +}; | ||
13 | + | ||
14 | +class D: public B, public C | ||
15 | +{ | ||
16 | + int d; | ||
17 | +}; | ||
18 | + | ||
19 | +class E: public C, public B | ||
20 | +{ | ||
21 | + int e; | ||
22 | +}; | ||
23 | + | ||
24 | +int main() | ||
25 | +{ | ||
26 | + D d; | ||
27 | + E e; | ||
28 | + | ||
29 | + C* cptr1 = &d; | ||
30 | + C* cptr2 = &e; | ||
31 | + | ||
32 | + cptr1->a = 1; | ||
33 | + cptr2->a = 2; | ||
34 | + | ||
35 | +} | ||
36 | + |
examples10/storable.cpp
0 → 100644
1 | +#include <iostream> | ||
2 | + | ||
3 | +class Storable { | ||
4 | +public: | ||
5 | +Storable() {}; | ||
6 | +virtual void write() {}; | ||
7 | +virtual ~Storable() {write() ; } // to be called | ||
8 | +// from overriding destructors | ||
9 | +}; | ||
10 | + | ||
11 | +class Data : public Storable | ||
12 | +{ | ||
13 | + public: | ||
14 | + int* data; | ||
15 | + Data() { data = new int(32); }; | ||
16 | + ~Data() { delete data; }; | ||
17 | + void write() override { std::cout << *(this->data) << std::endl;}; | ||
18 | +}; | ||
19 | + | ||
20 | +int main() | ||
21 | +{ | ||
22 | + Data d; | ||
23 | + Storable* ptr = &d; | ||
24 | + ptr->write(); | ||
25 | +} |