1int main(int argc, char** argv)
2{
3 struct A {
4 int a_;
5 } a{.a_: 1};
6
7 struct B {
8 int b_;
9 } b{.b_: 2};
10
11 struct C : A, B {
12 int c_;
13 } c;
14 // } c{{1}, {2}, 3};
15 c.a_ = 1;
16 c.b_ = 2;
17 c.c_ = 3;
18
19 struct D : C {
20 int d_;
21 A fa_;
22 } d;
23 // } d{{{1}, {2}, 3}, 4, {5}};
24 d.a_ = 1;
25 d.b_ = 2;
26 d.c_ = 3;
27 d.d_ = 4;
28 d.fa_.a_ = 5;
29
30 // Virtual inheritance example.
31 struct Animal {
32 virtual ~Animal() = default;
33 int weight_;
34 };
35 struct Mammal : virtual Animal {};
36 struct WingedAnimal : virtual Animal {};
37 struct Bat : Mammal, WingedAnimal {
38 } bat;
39 bat.weight_ = 10;
40
41 // Empty bases example.
42 struct IPlugin {
43 virtual ~IPlugin() {}
44 };
45 struct Plugin : public IPlugin {
46 int x;
47 int y;
48 };
49 Plugin plugin;
50 plugin.x = 1;
51 plugin.y = 2;
52
53 struct ObjectBase {
54 int x;
55 };
56 struct Object : ObjectBase {};
57 struct Engine : Object {
58 int y;
59 int z;
60 };
61
62 Engine engine;
63 engine.x = 1;
64 engine.y = 2;
65 engine.z = 3;
66
67 // Empty multiple inheritance with empty base.
68 struct Base {
69 int x;
70 int y;
71 virtual void Do() = 0;
72 virtual ~Base() {}
73 };
74 struct Mixin {};
75 struct Parent : private Mixin, public Base {
76 int z;
77 virtual void Do(){};
78 };
79 Parent obj;
80 obj.x = 1;
81 obj.y = 2;
82 obj.z = 3;
83 Base* parent_base = &obj;
84 Parent* parent = &obj;
85
86 return 0; // Set a breakpoint here
87}
88

source code of lldb/test/API/commands/frame/var-dil/basics/MemberOfInheritance/main.cpp