为什么复制构造函数中的“复制”引用仍然有效?

时间:2012-02-02 18:37:57

标签: c++ reference copy-constructor

我被告知如果你在课堂上有一个参考,你必须创建该类的new版本,而不是复制它们。为什么?因为在分配引用时实际上是指原始的东西,所以你实际上并没有做任何事情。问题是,为什么它仍然有效?

我的GameObjects包含对Meshes的引用,我可以将它们复制好并且它们都在正确的位置和所有内容中呈现。

1 个答案:

答案 0 :(得分:4)

复制构造函数初始化一个新的引用,没问题。

您可以做的是稍后重新分配参考。

以下是一个示例,假设您的类可以通过提供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

(假设您没有定义复制赋值运算符。如果这样做,则必须单独保留引用。)