c++ - 为什么 "copying"复制构造函数中的引用仍然有效?

标签 c++ reference copy-constructor

有人告诉我,如果您在类中有引用,则必须创建该类的 版本,而不是到处复制它们。为什么?因为当您分配一个引用时,您实际上是在引用原始事物,所以您实际上并没有做任何事情。问题是,为什么它仍然有效?

我的游戏对象包含对网格的引用,我可以很好地复制它们,它们都在正确的位置和所有地方渲染。

最佳答案

复制构造函数正在初始化一个新的引用,这很好。

您不能做的是稍后重新分配引用。

这是一个示例,假设您的类可以通过提供 Mesh 来构造,它保留对它的引用:

Mesh mesh;
GameObject o1(mesh);      // OK: initialising reference o1.mesh
GameObject o2(o1);        // OK: initialising reference o2.mesh
o1 = o2;                  // Error: attempt to reassign reference o1.mesh

(假设您没有定义复制赋值运算符。如果您定义了,那么它将不得不单独保留引用。)

关于c++ - 为什么 "copying"复制构造函数中的引用仍然有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9117970/

相关文章:

C++:使用 Firebreath 在多个实例中绘制位图

c++ - boost::bind 和插入 boost::unordered_map

c# - 有没有办法在 C# 中通过引用对对象进行一致的排序/排序?

使用指针的 C++ 复制构造函数

c++ - 我需要修改用于对角线边缘检测的 Sobel 内核。 OpenCV 和 C++

c++ - 右值的生命周期绑定(bind)到静态常量引用

methods - 如何在方法中将结构的数据分配给自身?

C++ 复制构造函数和 = 运算符重载

c++ - 复制构造继承

c++ - 哪种数据结构可以处理二维线段