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 | +} | ... | ... |