面试题答案
一键面试- 单继承自虚基类时的内存布局
- 该类对象通常会包含指向虚基类子对象的指针(虚基类指针),这个指针用于在运行时定位虚基类子对象。
- 类自身的数据成员紧跟在这个指针之后存储。
- 虚基类子对象的数据成员存储在对象内存布局的最后部分。
- 多层继承且涉及虚基类时的内存布局变化
- 在多层继承中,如果中间层的类继承自虚基类,后续的派生类对象依然只会有一份虚基类子对象,避免了虚基类子对象的重复存储。
- 派生类对象中,指向虚基类子对象的指针位置可能会有所变化,取决于编译器的实现,但通常还是会在对象的起始部分或者靠近起始部分存储这个指针,以方便快速定位虚基类子对象。
- 多层继承中,类自身的数据成员按照继承顺序依次排列在对象内存布局中,而虚基类子对象的数据成员始终处于对象内存布局的末尾,确保无论有多少层继承,虚基类子对象都只有一份且在固定位置,便于通过指针访问。