对象创建:Java和C++比较

1、C++创建对象方式 

在C++中我们可以采用如下两种方式来创建对象,

Dog  dog;//Dog为类名  



Dog *p = new Dog(); 

这两种方式在C++中都能完成对象的创建,但是在内存中的处理却完全不同。

对于第一种方式而言,dog是被存储在栈中的,占用的大小是Dog类中成员变量占用内存的和,此处不包括成员方法,因为成员方法是存放在公共存储区以便所有该类的对象都可以访问的。

对象创建:Java和C++比较

图1 C++创建对象方式1的内存分配

对于第二种方式则不同,该方式使用了指针,在定义*p时在栈中开辟一个4字节的空间,new Dog()时在堆中开辟一块空间,然后将该空间的首地址赋值给*p,这样,通过*p就可以找到对象在堆中的任何成员方法了。

对象创建:Java和C++比较

图2 C++创建对象方式2的内存分配

2、Java创建对象方式  

相关推荐