为什么C ++不允许重新引用引用?

时间:2014-11-20 10:51:45

标签: c++

重新引用引用是否有问题?我在Google上搜索了这个问题,但我找不到这个问题的相关答案。是什么让C ++的设计师决定这样做?

5 个答案:

答案 0 :(得分:10)

Stroustrup的The Design & Evolution of C++回答了大多数此类问题。在这种情况下,请参见§3.7参考:

部分
  

我过去曾被Algol68引用所咬,其中r1=r2可以通过r1分配给所引用的对象,或者为r1分配一个新的引用值(重新绑定{ {1}})取决于r1的类型。我想避免在C ++中出现这样的问题   如果你想在C ++中做更复杂的指针操作,你可以使用指针。

答案 1 :(得分:3)

Bjarne Stroustrup在语言中引入了对语句的引用,以支持运算符重载的参考参数("通过引用调用")。您根本不需要重新引用参考参数。

如果你想要"可重新引用的引用",请使用指针。

答案 2 :(得分:1)

在C ++中,引用只是对象的另一个名称。它不是间接的;这就是为什么你不能指出一个不同的对象。

答案 3 :(得分:0)

最重要的是,“引用”实际上是const指针。如果你想“重新绑定”,只需使用普通指针。

其次,我们不能在C ++中重新引用引用。

ref1 = ref2; // It's not mean "rebinding" - it just modify the object which ref1 points.

所以,我们需要创建一个新的运算符,比如

ref1 :=: ref2;

这将是C ++的点,不是吗?

答案 4 :(得分:0)

一个问题是语法。如何编写这样的操作?你必须创建一个全新的运算符来消除歧义,这对于已经可以用指针完成的事情来说是一项非常大的投资。