【问题标题】:Why need new operator in java but not in c++为什么在 java 中需要 new 运算符但在 c++ 中不需要
【发布时间】:2017-11-23 04:25:20
【问题描述】:

我一直在想 类名 ob; 可以在c++中创建一个对象 为什么需要需要 类名 ob=new 类名(); 在java中

【问题讨论】:

  • 因为它们是不同的语言。
  • Javascript 和 Java 不一样!您正在比较两种截然不同的语言,它们唯一的共同点是一些语法。
  • @Someprogrammerdude Java 和 JavaScript 在语法 ಠ_ಠ 上没有共同点
  • @PatrickRoberts 你显然也不熟悉。
  • @PatrickRoberts 我指的是 Java 和 C++。但是 JavaScript 从同一个家族借用了它的语法,并且确实共享了很多通用语法。以简单的for 循环为例,它在 C、C++、Java、JavaScript 和 C# 中看起来几乎相同。

标签: java new-operator


【解决方案1】:

C++ 和 Java 具有相似的语法,但含义并不总是相同。

在 Java 中,所有对象都是引用,因此当您执行 Classname obj; 时,您正在创建对对象的空引用,因此您需要为它分配一些东西。

Classname obj;
//here obj is pointing to nothing.

obj = new Classname();
//here obj is pointing to a new Classname object

同样的行为可以在 C++ 中用指针完成

Classname* obj;
//here obj is pointing to nothing.

obj = new Classname();
//here obj is pointing to a new Classname object

现在,C++ 中的Classname obj; 非常不同。它在堆栈中创建对象,简单来说,对象的行为类似于基本类型(int、bool、float 等)。 Java 不支持这种行为,因为它具有垃圾收集的性质。

【讨论】:

  • obj 对象是在堆内存中创建的,而不是在栈中!
猜你喜欢
  • 2012-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-14
  • 1970-01-01
  • 1970-01-01
  • 2012-03-09
相关资源
最近更新 更多