class Class1
{
public:
m_data1;
m_data2;
memfunc();
virtual vfunc1();
virtual vfunc2();
virtual vfunc3();
};
Class1 object instance:
━━━━━━━━━
┃ vptr ┃ ──> vtable
━━━━━━━━━ ━━━━━━━━━
┃ m_data1 ┃ ┃ (*vfunc1)() ┃──>Class1::vfunc1()
━━━━━━━━━ ━━━━━━━━━
┃ m_data2 ┃ ┃ (*vfunc2)() ┃──>Class1::vfunc2()
━━━━━━━━━ ━━━━━━━━━
┃ (*vfunc3)() ┃ ──>Class1::vfunc3()
━━━━━━━━━
class Class2: public Class1 {
public:
m_data3;
memfunc();
virtual vfunc2();
};
Class2 object instance:
━━━━━━━━━
┃ vptr ┃──> vtable
━━━━━━━━━ ━━━━━━━━━
┃ m_data1 ┃ ┃ (*vfunc1)() ┃──>Class1::vfunc1()
━━━━━━━━━ ━━━━━━━━━
┃ m_data2 ┃ ┃ (*vfunc2)() ┃──>Class2::vfunc2()
━━━━━━━━━ ━━━━━━━━━
┃ m_data3 ┃ ┃ (*vfunc3)() ┃──>Class1::vfunc3()
━━━━━━━━━ ━━━━━━━━━ Class2::memfunc();
博客展示了C++中类与对象的实例。定义了Class1类,包含数据成员和虚函数,展示其对象实例的内存布局。还定义了继承自Class1的Class2类,有新增数据成员和重写的虚函数,也给出了Class2对象实例的内存布局。
1061

被折叠的 条评论
为什么被折叠?



