32/64位系统下各类型sizeof计算结果如下:
http://www.cnblogs.com/sara-gcj/p/3324187.html
64位系统中操作如下:
空类如:
class Empty
{
};
Empty empty;
则sizeof(empty) = 1;
在class或struct中,如果有不同类型变量,回采取最长对齐原则。
比如说有如下类:
class A{
private:
int x;
double y;
};
A a;
则sizeof(a) = 8 + 8 = 16;
子类继承父类时,也会继承父类的成员变量等。
如:
class B :public A
{
private:
int c;
};
B b;
则sizeof(b) = 3 * 8 = 24;
如果函数中实现了虚函数,如:
class C
{
public:
virtual void f{};
};
C c;
在上述C类中,如果没有加virtual关键字,则sizeof(c) = 1;
加了virtual关键字后,sizeof(c) = 8.
我认为,加了virtual后函数会在运行时才确定使用哪个类中的方法,也就是指针所指向对象的方法,所以会相当于指针的8位。
学习小记,如有见解,望不吝赐教。