重新引用引用是否有问题?我在Google上搜索了这个问题,但我找不到这个问题的相关答案。是什么让C ++的设计师决定这样做?
答案 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)
一个问题是语法。如何编写这样的操作?你必须创建一个全新的运算符来消除歧义,这对于已经可以用指针完成的事情来说是一项非常大的投资。