我正在准备Java语言的考试,上一次考试中的一个问题是:“Java和C++在对象创建方面的主要区别是什么?”
我想我知道对象创建的基础知识,比如构造函数是如何调用的,初始化块在Java中做什么,当一个类的构造函数调用另一个类的方法时会发生什么等等,但我找不到任何明显的东西。答案应该是一两句话,所以我认为用Java描述整个对象创建过程并不是他们想要的。
有什么想法吗?
发布于 2010-09-29 17:24:35
除了堆/栈问题之外,我想说的是: C++构造函数有初始化列表,而Java使用赋值。详情请参见http://www.parashift.com/c++-faq-lite/ctors.html#faq-10.6。
发布于 2010-09-29 20:08:21
假设c++在进行新的调用时使用了alloc(),那么这可能就是他们想要的。(我不知道C++,所以在这里我可能大错特错)
Java的内存模型会在需要的时候分配一块内存,对于每个新的内存,它都会使用这个预先分配的区域。这意味着java中的new只是设置指向内存段的指针并移动空闲指针,而C++中的new (假定它在后台使用malloc )将导致系统调用。
这使得在Java中创建对象比使用malloc的语言更便宜;至少在没有初始化的情况下是这样。
简而言之,在Java中创建对象很便宜,除非您创建了大量对象,否则不用担心。
https://stackoverflow.com/questions/3820178
复制相似问题