Java 传值和类对象的 C++ 指针调用效果一样吗?

标签 java c++ function-pointers

我已经阅读了很多关于参数传递的资料。但我仍然有几个小问题要问。我了解基本类型的工作原理,现在我只关心将对象作为参数传递。

事实:

  1. Java 中的一切(原语/对象)都是按值传递
  2. 在Java中当一个对象作为参数传递时,引用变量的值被复制并传递。因此,当函数退出时,对对象的任何更改都是可见的。
  3. 在 C++ 中,参数传递可以通过三种方式完成:按值调用、按指针调用和按引用调用。
  4. 当通过指针调用将对象指针作为参数传递时,复制并传递对象(指针)的地址。变化也会反射(reflect)出来。

我的猜测:

Java的传值方式和C++的类对象的指针调用效果一样吗? 我说得对吗?

最佳答案

你是对的,Java 对象引用的功能基本上与 C++ 指针相同,除了在 C++ 中你可以取消引用并实际覆盖指针指向的内存块。你不能用 Java 做到这一点。

所以 Java 对象引用就像 C++ 指针,但没有 * 运算符。 Java . 运算符仅用于成员访问,就像 C++ -> 运算符一样。

关于Java 传值和类对象的 C++ 指针调用效果一样吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22109223/

相关文章:

java - Hibernate多对多关系查询

c++ - IDA PRO 将 C++ 代码转换为 C 代码 __OFSUB__ 宏

c++ - 指向 objc 类成员方法的函数指针,用于 C++?

java - 使用 Java 标准 keystore 是一种不好的做法吗

java - 制作 pacman 时遇到问题?

c++ - 未收到 Windows 多点触控 TOUCHEVENTF_UP

c++ - 是否可以在 C++ 中将指向类成员的指针作为单个参数传递?

c++ - 如何在可变参数模板类中获取函数指针的参数类型?

Java - 从 SFTP 直接下载到内存,无需写入文件

java - 无法在 libjvm.dylib (Mac OS) 中找到方法 JNI_GetCreatedJavaVMs