-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathInheritanceOrder.cpp
69 lines (57 loc) · 1.17 KB
/
InheritanceOrder.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
#include <iostream>
class A
{
private:
int x = 1337; // cant be accessed by derived classes
public:
int y = 0; // anyone can access
protected:
int z = 7331;
public:
A() { std::cout << "[A]" << std::endl; }
};
class B : public A
{
public:
B()
{
std::cout << "[B]" << std::endl;
z = 1337; // allowed, but it cant be accessed outside of the class
}
};
class C : public B
{
public:
C()
{
std::cout << "[C]" << std::endl;
z = 1; // allowed, but it cant be accessed outside of the class
}
};
class D : public C
{
public:
D() { std::cout << "[D]" << std::endl; }
};
class E : public D
{
public:
E() { std::cout << "[E]" << std::endl; }
};
int main()
{
std::cout << "Making A: " << std::endl;
A a;
std::cout << "Making B: " << std::endl;
B b;
std::cout << "Making C: " << std::endl;
C c;
std::cout << "Making D: " << std::endl;
D d;
std::cout << "----------" << std::endl;
std::cout << "A at: " << &a << std::endl;
std::cout << "B at: " << &b << std::endl;
std::cout << "C at: " << &c << std::endl;
std::cout << "D at: " << &d << std::endl;
return 0;
}