65,210
社区成员
发帖
与我相关
我的任务
分享class A
{
virtual void a()
{
}
};
class A1
{
virtual void a()
{
}
};
class B : public A , virtual public A1
{
};
void main()
{
cout<<sizeof(B)<<endl; //
}
class A
{
int a;
};
class B
{
int b;
};
class C
{
};
class D
{
};
class E: public virtual A , public virtual B , public virtual C , public virtual D
{
};
void main()
{
cout<<sizeof(E)<<endl; //
}
class A
{
};
class B
{
int b;
};
class C
{
};
class D
{
};
class E: public virtual A , public virtual B , public virtual C , public virtual D
{
};
void main()
{
cout<<sizeof(E)<<endl; //
}class A
{
int a;
};
class B
{
int b;
};
class C
{
};
class E: public virtual A , public virtual B , public virtual C
{
};
void main()
{
cout<<sizeof(E)<<endl; //
}
class A
{
virtual void a()
{
}
};
class A1
{
virtual void a()
{
}
};
class B : public A , virtual public A1
{
};
void main()
{
cout<<sizeof(B)<<endl; //BCB结果12 ,在B的内存模型中,base class A subobject
4个字节(虚函数表指针),virtual class B subobject 4个字节(虚函数表指针),class B另外在后
面安插一个vptr指向虚函数表
}
class A
{
int a;
};
class B
{
int b;
};
class C
{
};
class D
{
};
class E: public virtual A , public virtual B , public virtual C , public virtual D
{
};
void main()
{
cout<<sizeof(E)<<endl; //BCB结果16 ,在B的内存模型中,base class A subobject
4个字节(int),virtual class B subobject 4个字节(int),继承或多重继承下空类大小为1个字节
,对齐3字节,总为4字节,class E后面安插一个vptr(4Byte)指向虚函数表()。
}
class A
{
};
class B
{
int b;
};
class C
{
};
class D
{
};
class E: public virtual A , public virtual B , public virtual C , public virtual D
{
};
void main()
{
cout<<sizeof(E)<<endl; //BCB结果12,virtual base class B 4字节(int),继承或多重继承,空类大 小为1Byte,对齐3字节,总为4字节,后面安插vptr指向虚函数表。
}
class A
{
int a;
};
class B
{
int b;
};
class C
{
};
class E: public virtual A , public virtual B , public virtual C
{
};
void main()
{
cout<<sizeof(E)<<endl; //结果12,virtual base class A subobject 4字节(int),viftual base class B subobject 4字节(int)。后面安插vptr(4 Byte)指向虚函数表。总计12Btye
}