主题:c++中的类到底占不占内存的?
x不会飞
[专家分:0] 发布于 2011-10-25 17:24:00
#include<iostream>
using namespace std;
class Time
{
int year;
int month;
int day;
};
int main()
{
cout<<sizeof(Time)<<endl;
return 0;
}
书上说,类是对象的模板,对象是类的实例。类是抽象的,不占用内存,而对象是具体的,占用储存空间。
可是这个程序,并没有为类指定一个对象,却输出该类所占的字节数为12;
我试过了,如果为类指定一个对象
Time t1;
最后sizeof(t1)也是12.
这是为什么?
回复列表 (共7个回复)
沙发
argentmoon [专家分:13260] 发布于 2011-10-25 20:24:00
这和你调用
sizeof(int)
sizeof(long)
sizeof(float)
sizeof(double)
.............
是一个道理
板凳
cgl_lgs [专家分:21040] 发布于 2011-10-25 20:28:00
sizeof是指它的大小,而不能代表它占用了空间。
就相当于说:本数据表的某字段大小为12个字节,但它没有数据时也是不占用表的数据空间的。
3 楼
winmain2008 [专家分:280] 发布于 2011-10-27 13:08:00
不得不跟你们普及一下语法知识了,sizeof不是个函数,是个运算符跟+,-一样,你调用sizeof int,这样也是正确的。sizeof后面的类型是在编译时候就确定好了的。Time t1;sizeof(t1)t1的类型就是Time,在编译时就确定了的。比如你int i = 0;int j = sizeof(++i),很多人认为执行完后i = 1,其实i是等0的,因为sizeof是在编译时候就确定了好了类型,不是在运行时,++i的类型就是int,int j = sizeof(++i) 等价于int j = sizeof(int)。
不得不纠正留住一点,精确的讲sizeof得出的类型的大小,而不是你对象占用多少内存!!!
4 楼
x不会飞 [专家分:0] 发布于 2011-10-28 00:19:00
谢谢各位了。
5 楼
白人不白了 [专家分:0] 发布于 2011-10-29 13:59:00
很占内存了
signature----------------------------------------If you make yourself an ass, don't complain if people ride you.[url=http://www.freerunkicks.com/nike-lunarglide-2-c-56.html]nike lunarglide 2[/url] [url=http://www.freerunkicks.com/nike-lunarglide-3-c-57.html]nike lunarglide 3[/url] [url=http://www.freerunkicks.com/nike-air-max-2011-c-53.html]nike air max 2011[/url] [url=http://www.freerunkicks.com/nike-air-max-2012-c-62.html]nike air max 2012[/url]
6 楼
Emiracle [专家分:0] 发布于 2011-11-06 01:02:00
学习了!
7 楼
Emiracle [专家分:0] 发布于 2011-11-06 01:04:00
学习了!
我来回复