您的位置:首页 > 其它

64位系统下sizeof()小结

2016-04-10 12:52 232 查看
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位。

学习小记,如有见解,望不吝赐教。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: