为什么引用不可复制? 我现在正在努力思考清楚。 为什么你不能复制引用并使用对同一对象的另一个引用来结束?这不是参考的副本吗?
我觉得我有一些超级显而易见的东西。
答案 0 :(得分:1)
在c ++中,将命名变量声明为引用,即对已存在的对象或函数的别名。
也就是说,对引用的任何操作都等于对您引用的orinal对象的操作。
因此,一旦你写了类似的东西:
int foo=1;
int &bar=foo;
int a;
a=bar;//it's actually copying the foo,bar is just a alias.
因此复制引用本身只是复制原始对象。
作为补充,一旦存在引用类型的类成员,隐式默认复制/移动分配将为=deleted
。因为如果允许,在复制赋值之后,引用类型的类成员将不会查找其正常引用的对象,这不是我们实际想要的并且可能导致歧义。
但是,允许复制/移动构造函数,因为它们只是初始化而不是复制,这不会导致歧义。