今天有人问我这个问题。 什么是C++中引用的需要,为什么Bjarne Stroustrup
想过reference
在C++中。C++中需要引用什么
0
A
回答
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
// ...
}
+0
别忘了'复杂的a,b; f1(&a,&b); f2(a,b);'调用函数也不那么费劲。 – chris 2012-04-05 20:38:53
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
// ...
}
相关问题
- 1. C#需要什么类型?
- 2. C++为什么要使用引用?
- 3. 为什么xcopy需要多个引号?
- 4. 为什么需要Push引擎
- 5. 为什么需要两个括号在c/C++中使用宏?
- 6. 为什么我们需要javascript中的自引用对象
- 7. 使用SSL需要什么?
- 8. 在vb6中需要什么?
- 9. C++二叉树类需要什么
- 10. c#什么需要处理时间?
- 11. 为什么C++字符串需要\ 0?
- 12. 为什么bcrypt需要C++和Python?
- 13. C++函数getline需要什么
- 14. 为什么我需要那条线? (C#)
- 15. 为什么我不需要引用非视觉工作室c#应用程序
- 16. Freeze_support需要什么?
- 17. Control.IsHandleCreated需要什么?
- 18. ActiveSync需要什么?
- 19. 为什么需要
- 20. subwcrev需要什么?
- 21. NLP需要什么?
- 22. 在Ironpython中使用ipython需要什么?
- 23. 我需要使用NHibernate QueryOver的引用是什么?
- 24. 为什么我需要用C类名的 “C” 盈++
- 25. C#Visual Studio需要引用基类DLL
- 26. C结构解引用需要Lvalue
- 27. Application.DoEvents,什么时候需要,什么时候不需要?
- 28. 为什么C++函数对象需要引用类型成员变量?
- 29. 为什么在C++中通过引用传递的参数不需要解引用运算符?
- 30. 什么是!!的意义!在C - 为什么它需要?
怎样的“语法糖”的答案是有用的规模汇率?该功能的另一个名称可能是“指针分离器”。 – dasblinkenlight 2012-04-05 19:00:57
有一个统一的语法来访问一个值和一个指针。引用填充的最重要的功能是能够重载涉及它们的操作符。 – enobayram 2012-04-05 19:01:30
您的语法已关闭。很难确切地说出你的意思。你是指通过引用传递参数,而不是通过值或指针传递? – DevNull 2012-04-05 19:12:32