java - 我对 java 和 c++ 之间的 "reference"感到困惑

标签 java c++

<分区>

我一直在用java 但最近我不得不切换到 C++,我对一些不同的事情感到困惑。 我的问题是, 在 Java 中,

class Ex
{

   public static void main(String[]args){
       Ex e = func();
   }

   static Ex func(){
       Ex ee = new Ex();
       ee.x = 1; 
       ee.y = 2;
       return ee;
   }

}

class Ex
{
    int x;
    int y;
}

e 和 ee 相同。

但是在c++中,

vector<int> func()
{
    vector<int>a;
    a.push_back(1);
    a.push_back(2);
    return a;
}

int main()
{
    vector<int>aa = func();
}

在这种情况下,a 和 aa 是一样的吗?? 如果不相同,每次我想返回 vector 时,它是否总是复制到调用区域?

最佳答案

在 C++ 中,每次调用 func 时,a 都会被复制到 aa 中。但是使用现代 C++ 和 Copy elision , 该对象要么直接在给定内存 (aa) 中构造,要么构造 a 然后移动。

关于java - 我对 java 和 c++ 之间的 "reference"感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56948314/

相关文章:

c++ - 动态 3D 阵列上的 OpenGL glDrawPixels

java - 如何使用 jexcelapi 或 Apache HSSF 跟踪更改

java - 字符串中的replaceAll方法如何工作

c++ - 使用委托(delegate)调用构造函数和另一个构造函数体的区别

c++ - 逗号分隔的语句是否被视为完整语句? (和其他诊断问题)

c++ - 为什么未初始化的 const 成员在 C 中的处理方式与在 C++ 中的处理方式不同?

java - 从灰度值构建图像

java - 如何在 jsp View 中加载 extjs 5 应用程序 - Spring MVC?

java - 如何编写一个呈现 JSP 片段列表的 JSP,而无需 IF 切换代码

c++ - 在 C++11/C++14 中的类中存储对象类型的列表/映射