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位。
学习小记,如有见解,望不吝赐教。
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位。
学习小记,如有见解,望不吝赐教。
相关文章推荐
- 孙敬哲的C++上机实验3-2
- asp.net MVC 和 webForm的区别
- jQuery UI的一些基本用法
- JAVA程序性能优化
- WebApp中的页面生命周期及路由管理
- 学习java第二周
- Aspnetpager对GridView分页并顺利导出Excel
- Mac 10.11 android6.0源码编译
- 编程珠玑_磁盘中无重复大量整数数据排序限制内存借助位图
- nyoj737 石子合并 区间dp
- CentOS运行C++程序出现内存错误-munmap_chunk():invalid pointer
- 正则表达式基本语法
- getLeft,getTop,getRight,getBottm区别
- 初衷
- [LeetCode] Trips and Users 旅行和用户
- 看看走过的路——个人重构
- JavaScript------入门
- 【杭电oj】1220 - Cube(数学水题)
- 按层换行打印二叉树
- 第七周项目1—两点间的距离(成员函数)