堆中对象

来源:百度知道 编辑:UC知道 时间:2024/09/28 14:25:49
谁能给我详细讲一讲堆中对象.....堆的概念我已经直到了....
还有,比方说我声明了一个Human类....那 Human *p=new Human;什么意思阿?如果是int *p=new int的话是指在堆中开辟一个int型大小的空间...并让指针p指向他......那Human *p=new Human...这我怎么也没发理解
那那这个堆的空间有多大?是整个类吗?还是只是类的构造函数?

这个,
1.堆中的对象,就好像给你一个杯子,叫堆,然后对象就是冰块,一个对象可以比喻成一个冰块。然后如果是这种形式Human *p=new Human(),就说杯中new了一个冰块,然后,通过p可以找到这个冰块。
2.Human *p=new Human()。这个这样跟你说吧,在c++中,规定new返回的是个地址,所以,前面就要定义成*p,但在java中,这个应该是引用,这样写就可以了
Human p=new Human();这个取决于哪种语言的发明者,我想这些都是规定,不需要理解,是前人制定的规则,记住会用就ok了‘
3.关于int。int应该为基本数据类型。如果说成类,我想从宏观上讲也许没错,但不准确。一般,我们定义一个变量,如int i;这里是分配在栈中的。但如果用int *p=new int的话,就是分配在堆中的,这个理解应该结合栈和堆的区别来理解。
4.堆的空间应该是你new的对象存放的空间,跟构造函数没这种空间的关系,构造函数在执行时会分配空间,应该说构造函数只是个函数,跟分配堆的大小没有直接关系

int 也是一个类,只不过已经被定义好了。
human 类是你定义的,如果你的human类足够强大,典型,规范,
以后大家就可以直接使用Human *p=new Human,不用自己去定义,就这意思。