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的各种玩法的主要内容,如果未能解决你的问题,请参考以下文章

视频直接变漫画!GAN又有了新玩法|Demo+代码+论文

C++ 代码片段(积累)

GTA5最有趣的玩法都是都有哪些?

颜色值的各种玩法及区别:#FFFFFF,rgb(256, 256, 256),0xFFFFFF

vbscript 各种自定义代码片段 - 有关详细信息,请参阅注释

各种推导式玩法