java - Java 引用和 C++ 引用有什么区别

标签 java c++ pointers reference

所以我一直在想(在阅读这个 Java pdf 时)...

我知道这可能看起来很傻,但为什么我不能在 C++ 中这样做。

float &f = new float;

这不是说f的引用是new float的地址吗?

在Java中,我看到了这样的东西

String s = new String("something")

String s 称为字符串引用。

Java 中的“引用”一词与 C++ 中的含义相同吗?

最佳答案

Java 引用更接近于 C++ 指针,而不是 C++ 引用。在 Java 中,您可以使用引用执行以下操作:

  • 更改它引用的对象
  • 检查两个引用是否相等
  • 向引用的对象发送消息。

在 C++ 中,指针具有这些相同的属性。因此,您在 C++ 中寻找的代码类似于

float* f = new float;

这是完全合法的。为了更好地比较,这段 Java 代码:

String myString = new String("This is a string!"); // Normally I wouldn't allocate a string here, but just for the parallel structure we will.
System.out.println(myString.length());

/* Reassign myString to point to a different string object. */
myString = new String("Here's another string!");
System.out.println(myString.length());

将映射到此 C++ 代码:

std::string* myString = new std::string("This is a string");
std::cout << myString->length() << std::endl;

delete myString; // No GC in C++!

/* Reassign myString to point to a different string object. */
myString = new std::string("Here's another string!");
std::cout << myString->length() << std::endl;

delete myString; // No GC in C++!

希望这对您有所帮助!

关于java - Java 引用和 C++ 引用有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9185462/

相关文章:

java - 添加 Equinox OSGI 钩子(Hook)抛出 ClassNotFoundException

java - 如何在JTable(JAVA)中显示FK ID的引用

c++ - 委托(delegate)给另一个对象的运算符(operator)->

pointers - Golang &(*(&v)) 语义

c++ - return语句后删除指针

c - 使用 uint32_t* 更改 uint8_t 数组的值

java - 如何通过 URL 对象访问嵌入在 JAR 文件中的 JPG?地址是什么?

java - 包私有(private)访问级别的行为不一致

c++ - 在 C++ 中传递 void(*)

c# - 来自 ifstream 的文本开始时带有 "\0\0\0