C++sizeof的各种玩法
Posted 默*为
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++sizeof的各种玩法相关的知识,希望对你有一定的参考价值。
16:23:44
/*1.基本类型 */ size_t len = sizeof(char);//1 len = sizeof(float);//4 len = sizeof(int);//4
len = sizeof(long);//4
len = sizeof(double);//8 /*2.容易误导类型*/ const char* str = "123456"; len = sizeof(str);//4 len = sizeof(*str);//1 /*3.类与结构体类型(空) */ struct {}S_t, * PS_t; class {}C_t; size_t len = sizeof(S_t);//1 len = sizeof(PS_t);//4 len = sizeof(C_t);//1
/*4.类与结构体类型(成员排布导致内存变换类型) ,当前内存对齐设置为8时候*/
struct {
int x = 0;
char y = 0;
double d = 0.00;
}S_t, * PS_t;
struct
{
int x = 0;
double d = 0.00;
char y = 0;
}T_t,*PT_t;
size_t len = sizeof(S_t);//16 【4+1(浪费3) + 8】
len = sizeof(T_t);//24 【4 + (浪费4) + 8 + 1+(浪费7)】
/*5.类带有继承的性质,可以说比较难理解*/
class CB {};//空基类
class CS1:public CB{};//空子类
class CS2 :public CS1 { char c = 0; };//非空子类
class CS3 :public CB {
virtual void fun() = 0; virtual void fun2() = 0;
};
class CS4 :public CS2 {
virtual void fun() = 0; virtual void fun2() = 0;
};
int main()
{
size_t len = sizeof(CB);//1
len = sizeof(CS1);//1
len = sizeof(CS2);//1
len = sizeof(CS3);//4[纯虚函数认为是一个指针,但是多个纯虚函数依旧算一个指针的大小]
len = sizeof(CS4);//8【4 + 1(浪费的3)】
return 0;
}
以上是关于C++sizeof的各种玩法的主要内容,如果未能解决你的问题,请参考以下文章
颜色值的各种玩法及区别:#FFFFFF,rgb(256, 256, 256),0xFFFFFF