C/C++中sizeof的运用
来源:互联网 发布:瓷器餐具品牌 知乎 编辑:程序博客网 时间:2024/06/05 02:02
通过实践将个人对sizeof的理解写到这里,还望大家的指点
以下是我的实践代码
#include <iostream.h>
class A{};
class B
{
int a;
char c;
static int s;
};
class C
{
int d;
virtual void f();
};
class D:virtual public B
{
double dd;
};
class E:public C
{
virtual void f1();
};
class F:virtual public B
{
};
class G:public D,F
{
};
void main()
{
int a[20];
int *p;
double *da[20];
cout<<"double类型 "<<sizeof(double)<<endl;//double类型占有8个字节
cout<<"整型数组 "<<sizeof(a)<<endl;//数组占有4*20个字节
cout<<"int类型指针 "<<sizeof(p)<<endl;//指针占有4个字节
cout<<"double指针数组 "<<sizeof(da)<<endl;//double指针类型的数组占有4*20个字节,因为指针式占有四个字节的
cout<<"empty class "<<sizeof(A)<<endl;//空类占有一个字节,因为每个实例在内存中都有一个独一无二的地址,
//为了达到这个目的,编译器往往会给一个空类隐含的加一个字节,
//这样空类在实例化后在内存得到了独一无二的地址
cout<<"带有两个普通成员一个静态成员的类 "<<sizeof(B)<<endl;//B类的大小事8,因为内存对齐,所以c后面有3个字节是空的,而s是static类型属于全局数据区的
cout<<"带有虚函数的类 "<<sizeof(C)<<endl;//int型4个字节,虚指针4个字节
cout<<"虚拟继承 "<<sizeof(D)<<endl;//double占8个字节,基类中的int和char类型共占8个字节,多三个字节空着
//虚指针占4个字节,多4个空着为了字节对齐
cout<<"基类中有虚函数,本类中也有虚函数 "<<sizeof(E)<<endl;//基类C中的int型占四个字节,基类和派生类中的虚函数共用一个虚指针
//占用4个字节
cout<<"虚拟继承的类 "<<sizeof(F)<<endl;//从基类中派生过来的成员有8个字节,虚指针4个字节,共12个字节
cout<<"多重继承 "<<sizeof(G)<<endl;//从基类中得到的成员共D类中double8个字节,B类中int和char共8个字节,
//D类和F类中分别8个虚指针字节所以共32个字节
}
以下为代码的运行结果
double类型 8
整型数组 80
int类型指针 4
double指针数组 80
empty class 1
带有两个普通成员一个静态成员的类 8
带有虚函数的类 8
虚拟继承 24
基类中有虚函数,本类中也有虚函数 8
虚拟继承的类 12
多重继承 32
- C/C++中sizeof的运用
- C 中 sizeof的用法
- C中sizeof的用法
- c 中sizeof 总结
- C中sizeof()
- C语言中 sizeof
- sizeof不是函数,C语言中sizeof的陷阱
- C语言中sizeof()的用法
- C语言中sizeof的用法
- C\C++中sizeof的用法
- 关于c/c++中sizeof的资源
- C语言中sizeof的用法
- c中sizeof()运算符的问题
- C的题-sizeof
- c的sizeof
- C++(C)中Sizeof与Strlen的区别
- C中内存和指针的运用
- C语言中 #和##的运用
- 需求分析的故事——如何练就需求分析的火眼金晴?
- VS2005下如何安装配置编译Qt4.5
- java 大数类
- 比較經典有味道的句子
- 使用内存映射文件读写大文件
- C/C++中sizeof的运用
- 软考终于结束了!!!
- iptables使用简介-01
- 五个SQL Server数据库备份与恢复必需知道并且会用的具体操作
- 1.2 使用iptables进行包过滤
- Linux的kill命令与信号控制
- 软件设计师考试……
- 栈和堆的区别
- Struts2标签介绍