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

1、C++创建对象方式 

成都创新互联公司-专业网站定制、快速模板网站建设、高性价比内黄网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式内黄网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖内黄地区。费用合理售后完善,十载实体公司更值得信赖。

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

 
 
 
 
  1. Dog  dog;//Dog为类名  
  2. Dog *p = new Dog(); 

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

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

  

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

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

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

2、Java创建对象方式  

在C++中我们有两种创建对象的方式,而在Java中只提供了如下的一种方式,

 
 
 
 
  1. Dog dog = new Dog(); 

JVM在进行内存管理时,首先会在栈中给dog分配一个空间,当new Dog();后会在堆中开辟对象的实际空间,然后将dog指向堆中的空间,这样我们就可以方法对象的成员变量了。

    图3 Java创建对象方式的内存分配

3、总结

通过图2和图3我们会发现Java创建对象的方式和C++创建对象方式的第二种很像,除了我故意写的p和dog还有数字,其他的都是一样的。是这样的,他们的确很像,但是却不完全相同,在C++中p是一个指针,通过指针我们可以访问内存中的任何地址,可以肆意的对内存做处理,然而在Java中 dog是一个引用,可以理解成是C++中指针的一个封装,我们不可以想在C++中用指针那样在Java中直接的进行地址++操作,这样一来就保证了内存的安全,这是C++和Java的很大不同。

本人文字功底极弱,若有描述不清或不当之处,望大家指正,感谢各位花费时间阅读完毕。

网站题目:对象创建:Java和C++比较
浏览地址:http://www.shufengxianlan.com/qtweb/news10/123560.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联