2 u012884217 u012884217 于 2015.05.31 15:40 提问

请教下,类不占用存储空间怎么理解?

比如定义一个类 class Time。数据成员中hour,minute,sec 这些不占用存储空间吗?比如hour,这四个字符不占用空间?

17个回答

caozhy
caozhy   Ds   Rxr 2015.05.31 15:42

当然占用存储。
如果这些字段是值类型,那么占用它本身长度的存储。如果是引用类型,占用4个字节。

oyljerry
oyljerry   Ds   Rxr 2015.05.31 15:48

这只是一个概念上的意思,就是类需要跟实例对象绑定,定义一个类的对象,然后才来说它的占有空间等。

liuyuusecsdn
liuyuusecsdn 说得好
接近 3 年之前 回复
u012884217
u012884217 原来如此。
接近 3 年之前 回复
caozhy
caozhy   Ds   Rxr 2015.05.31 15:50

对于C++来说,你定义的字段,对于对象,都是需要分配内存的,无论是堆上还是栈上
你可以用sizeof看下。

gamefinity
gamefinity   Rxr 2015.05.31 17:14
  • 是说类,不是说实例吧。
  • 对的,类不占存储空间(当然静态属性、方法不在讨论之列)。可以认为,类是一种格式。它规定了在实例的一块存储空间中那个位置表示什么。
  • 但是类本身不是数据,所以不占存储空间。
  • 在编译的时候,对应的类中的属性、方法都被转换成基础地址的偏移量。
  • 至于你所说的hour,那只是源代码里给人看的,最终给电脑看的版本里面是没有的。
bdmh
bdmh   Ds   Rxr 2015.05.31 15:44

怎么不占用,你new的时候都要分配空间给各个成员

u012884217
u012884217 在讲构造函数的章节。
接近 3 年之前 回复
u012884217
u012884217 我是看谭浩强的c++教材怎么写的。原文是:因为类并不是一个实体,而是一种抽象类型,并不占用存储空间,显然无处容纳数据。例子是class Time ;在教材的69页
接近 3 年之前 回复
guwei4037
guwei4037   Ds   Rxr 2015.05.31 15:57

类只是定义,只有真正加载内,实例化对象的时候,才会分配空间。

wzm123456
wzm123456   2015.05.31 16:29

静态定义,不参于编译

nma_123456
nma_123456   2015.05.31 16:36

定义类的时候,如果不是静态类,理论上不会占用内存空间,当实例化后会分配内存空间

wangtao0527
wangtao0527   2015.05.31 17:10

当然占用存储。
如果这些字段是值类型,那么占用它本身长度的存储。如果是引用类型,占用4个字节。

caozhy
caozhy 这种胡乱抄袭别人答案骗分的,建议永久封杀。
接近 3 年之前 回复
nma_123456
nma_123456   2015.05.31 17:17

定义类的时候,如果不是静态类,理论上不会占用内存空间,当实例化后会分配内存空间

共17条数据 1 尾页
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!