在C ++中需要引用的是什么

时间:2012-04-05 18:58:07

标签: c++

今天有人问我这个问题。 在C ++中需要引用的是什么,为什么Bjarne Stroustrup在C ++中考虑reference

2 个答案:

答案 0 :(得分:5)

这是Stroustrup的解释:http://www2.research.att.com/~bs/bs_faq2.html#pointers-and-references

  

C ++继承了C的指针,因此我无法在不引起严重兼容性问题的情况下删除它们。引用对于几个方面很有用,但我在C ++中引入它们的直接原因是支持运算符重载。

以下是一个例子:

void f1(const complex* x, const complex* y) // without references
{
    complex z = *x+*y;  // ugly
    // ...
}

void f2(const complex& x, const complex& y) // with references
{
    complex z = x+y;    // better
    // ...
}   

答案 1 :(得分:1)

如果您想知道这样的问题的答案,请阅读一本名为“C ++的设计和演变”的书,由该人自己编写:

http://www2.research.att.com/~bs/dne.html

或者,请看这里,他详细解释了答案:

http://www2.research.att.com/~bs/bs_faq2.html#pointers-and-references

引用:

  

C ++继承了C的指针,所以我没有删除它们   造成严重的兼容性问题参考资料非常有用   几件事,但我在C ++中介绍它们的直接原因是   支持运算符重载。例如:

void f1(const complex* x, const complex* y) // without references
{
    complex z = *x+*y;  // ugly
    // ...
}

void f2(const complex& x, const complex& y) // with references
{
    complex z = x+y;    // better
    // ...
}