53 lines
1.1 KiB
C++
53 lines
1.1 KiB
C++
struct CommonBase {
|
|
int m_base;
|
|
int virt_base_val;
|
|
int func_base_val;
|
|
virtual int virt_base() { return virt_base_val; }
|
|
virtual int virt_common() { return 555; }
|
|
int func_base() { return func_base_val; }
|
|
int func_common() { return 777; }
|
|
};
|
|
|
|
struct Base1 : CommonBase {
|
|
int m1 = 22;
|
|
Base1() {
|
|
// Give the base functions/members unique values.
|
|
virt_base_val = 111;
|
|
func_base_val = 112;
|
|
m_base = 11;
|
|
}
|
|
virtual int virt1() { return 3; }
|
|
int func1() { return 4; }
|
|
};
|
|
|
|
struct Base2 : CommonBase {
|
|
int m2 = 33;
|
|
Base2() {
|
|
// Give the base functions/members unique values.
|
|
virt_base_val = 121;
|
|
func_base_val = 122;
|
|
m_base = 12;
|
|
}
|
|
virtual int virt2() { return 5; }
|
|
int func2() { return 6; }
|
|
};
|
|
|
|
struct FinalClass : Base1, Base2 {
|
|
int m_final = 44;
|
|
virtual int final_virt() { return 7; }
|
|
int final_func() { return 8; }
|
|
virtual int virt_common() { return 444; }
|
|
int func_common() { return 888; }
|
|
};
|
|
|
|
int main() {
|
|
FinalClass C;
|
|
// Call functions so they get emitted.
|
|
C.func1();
|
|
C.func2();
|
|
C.final_func();
|
|
C.func_common();
|
|
C.Base1::func_base();
|
|
return 0; // break here
|
|
}
|