sizeof的总结

sizeof的总结:
基本类型:
       sizeof(bool)=1;
       sizeof(char)=1;
       sizeof(short)=2;
       sizeof(long)=4;
       sizeof(int)=4;
       sizeof(float)=4;
       sizeof(double)=8;
   sizeof(string)=16;T,个数为n的数组array:
   sizeof(vector<elemType>)=16;

元素类型为
sizeof(array)=n*sizeof(T);
 

 

指针和引用:
       sizeof作用于指针变量时,结果总是为4,而作用于引用变量时,结果等于所引用的变量的size。如:
double a;              double* b=&a;       double& c=a;
则sizeof(b) =4;sizeof(c) =8
 
类:
1)无父类的类 : 其size原则上等于其非静态成员变量的size之和:
class CTest1{
       public:
              int a,b
              static double c;
              double d;
};
sizeof(CTest1)=sizeof(a)+sizeof(b) +sizeof(d)=4+4+8=16;
为什么说原则上等于呢?因为变量只能在内存中一个字的开头存储,所以定义成员变量的顺序可能会影响到类的size,如将上面的CTest1改为
class CTest2{
       public:
              int a;
              static double c;
              double d;
              int b;
};
sizeof(CTest2)=24; 可以看出类中成员变量的定义顺序会影响到内存的利用率,这是跟编译器的对齐方式有关。
 
2)派生类:需要加上其基类的size
class CTest3:CTest1{
public:
       int e;
}; sizeof(CTest3)=24

3)class CTest4{}; //sizeof(CTest4)=1
  class CTest5{virtual  ~CTest5(){}};//sizeof(CTest5)=4 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值