Pra*_*rav 26
Java和C++之间的对象创建的主要区别是什么?
与Java不同,C++对象也可以在堆栈上创建.
例如,在C++中,您可以编写
Class obj; //object created on the stack
Run Code Online (Sandbox Code Playgroud)
在Java中你可以写
Class obj; //obj is just a reference(not an object)
obj = new Class();// obj refers to the object
Run Code Online (Sandbox Code Playgroud)
pae*_*bal 19
除了其他优秀的答案,有一点非常重要,通常忽略/忘记或误解(这可以解释为什么我下面详细过程):
C++和Java之间的区别是:
每种语言的"错误"都不同:
从概念上讲,构造函数的工作是使对象存在(这不是一个普通的壮举).在任何构造函数中,整个对象可能只是部分形成 - 您只能知道基类对象已经初始化,但您无法知道哪些类是从您继承的.但是,动态绑定的方法调用会在转发层次结构中"前进"或"向外".它在派生类中调用方法.如果你在构造函数中执行此操作,则调用可能操作尚未初始化的成员的方法 - 这是一个确定的灾难方法.
Bruce Eckel,http://www.codeguru.com/java/tij/tij0082.shtml
在基类构造期间,虚函数永远不会归结为派生类.相反,该对象的行为就像它是基本类型一样.非正式地说,在基类构建期间,虚函数不是.
Scott Meyers,http://www.artima.com/cppsource/nevercall.html
小智 8
除了堆/堆栈问题,我会说:C++构造函数具有初始化列表,而Java使用赋值.有关详细信息,请参阅http://www.parashift.com/c++-faq-lite/ctors.html#faq-10.6.