C++中用sizeof计算一个类的大小时,应排除static成员
作者:
XDgbh | 来源:发表于
2018-06-14 18:09 被阅读1次
- sizeof的本质是得到某个类型的大小,确切的来说就是当创建这个类型的一个对象(或变量)的时候,需要为它分配的空间的大小。而类也可以理解为类似于int、float这样的一种类型,当类中出现static成员变量的时候,static成员变量是存储在静态区当中的,它是一个共享的量,因此,在为这个类创建一个实例对象的时候,是无需再为static成员变量分配空间的,所以,这个类的实例对象所需要分配的空间是要排除static成员变量的,于是,当sizeof计算类的大小的时候会忽略static成员变量的大小。
- sizeof计算类的大小时,只计算(非static的)数据成员变量即可,不用考虑那些成员函数。
- sizeof是操作符,后面如果是一个变量或者一个实际的值(如3或0.3),那么可以不加括号,如果是类型名则必须加括号。
strlen()是一个函数,内部实现是循环计算实际字符个数,直到遇到结束符'\0'为止。
程序在编译的时候就把sizeof大小计算好了,因此可以将sizeof计算值作为数组元素个数的参数。然而strlen大小必须在程序运行时才知道。
- sizeof操作计算一个数组名时,得到数组的内存大小,而不是实际字符的个数。sizeof操作的是一个指针时得到指针大小4字节。而strlen()的参数是char ,传入数组名时会自动转为char类型,会得到数组字符串(带'\0'结束符的字符数组)中实际字符个数。
本文标题:C++中用sizeof计算一个类的大小时,应排除static成员
本文链接:https://www.haomeiwen.com/subject/naoyeftx.html
网友评论