C++中sizeof如何计算类的大小(补充)

2014-11-24 09:07:25 · 作者: · 浏览: 0

先贴代码:


#include
#include
#include
#include
#include
#include
using namespace std;
class C1
{
private:
int a;
int f;
public:
float b;
char c;
bool e;
short d;
void getA()
{
int c;
}
};
class C2
{
private:
int a;
int f;
public:
float b;
char c;
short d;
bool e;
void getA()
{
int c;
}
};
class C3
{
public:
static int a;
int b;
};
class C4:public C3
{
static int a;
};
class C5:public C3
{
static int b;
};
int main(int argc, char *argv[])
{
vector v_int ;
deque d_int;
int a[5] = {1,2,3,4,5};
int *b;
cout<<"sizeof(a):"< cout<<"sizeof(b):"< cout<<"sizeof(C1):"< cout<<"sizeof(C2):"< cout<<"sizeof(C3):"< cout<<"sizeof(C4):"< cout<<"sizeof(C5):"< cout<<"sizeof(vector_int):"<)< cout<<"sizeof(deque_int) :"<)< cout<<"sizeof(vecotr_char):"<)< cout<<"sizeof(deque_char):"<)< cout<<"sizeof(v_int):"< cout<<"sizeof(d_int):"<

cout<<"after insert five elements:"< for(int i = 0;i < 100; i++)
{
v_int.push_back(i);
d_int.push_back(i);
}
cout<<"sizeof(v_int):"< cout<<"sizeof(d_int):"<

return 0;
}


结果如下:


sizeof(a):20
sizeof(b):4
sizeof(C1):16
sizeof(C2):20
sizeof(C3):4
sizeof(C4):4
sizeof(C5):4
sizeof(vector_int):12
sizeof(deque_int) :40
sizeof(vecotr_char):12
sizeof(deque_char):40
sizeof(v_int):12
sizeof(d_int):40
after insert five elements:
sizeof(v_int):12
sizeof(d_int):40


从上面看到:


1.sizeof计算类的大小的话需要判定成员变量出现的顺序。


2.static 静态成员变量不占sizeof的大小


3.容器对象的大小就是类的大小,不管对象里有多少元素。


4.数组的sizeof就是元素类型的大小和数组大小的乘积。


另外,sizeof可应用于任何变量名、类型名或常量值。sizeof是一个运算符,而不是函数。在编译时起作用,而不是运行时,所以不会造成性能损失,sizeof只有在操作类型名时才需要加括号,其他时候可加可不加。