c++ - 在 C++ 类中使用按引用传递和成员初始化列表时会发生什么?

标签 c++ class

好的,所以我有一个大 vector 说

vector<vector<vector<int>>> 

10000 x 10000 x 10000。

我有一个类,它有一个 vector 作为私有(private)成员变量:

class foo {
private:
vector<vector<vector<int>>> myvector
};

我的类有一个构造函数,它使用引用传递和初始化列表:

foo(vector<vector<vector<int>>> &myvector_in) : myvector(myvector_in);

我想知道在内存使用方面到底发生了什么。 private myvector 和原来声明的一样吗,还是复制的。

基本上,我想知道内存中是否有两个版本的 myvector。

谢谢!

最佳答案

这是一个钓鱼技巧。

自己很容易回答。将 myvector_in 的 [0][0][0] 设置为已知值。调用构造函数并在其中还将 [0][0][0] 设置为 myvector 的不同值。构造函数返回后,打印 myvector_in 的内容。如果它与您最初设置的相同,您必须得出结论,这两个 vector 是不同的实体,因此一个被复制到另一个。如果它们相同,您可以断定它们实际上是相同的实例。

您还可以打印地址以更好地了解什么是什么。

我必须指出,你原来的问题中提到的内存要求是在 super 计算机领域,你有吗?

关于c++ - 在 C++ 类中使用按引用传递和成员初始化列表时会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46394962/

相关文章:

c++ - 将 OpenCV 与 Qt 链接时出错

c++ - __GI_raise 中的 ACE 崩溃

class - VBA 类方法链接

class - 延迟加载 webp 图像 - 如何添加类

php - 另一个类中的 MySQLi 连接

c++ - 二维可变大小数组 C++

c++ - C++ 中的 C# 样式枚举

c++ - 编译器错误 __ZTVN13..6..E

python - 在Python中,为什么 "object"类全部是小写而不是第一个字母大写?

java - 带有自己类的 NullPointerException