在ostream&类之类的名字之后使用的&符号是什么?运算符<(...)?

时间:2009-10-15 12:20:11

标签: c++ pointers class operator-overloading addressof

我知道关于指针的所有内容,&符号表示“地址”,但在这种情况下它意味着什么?

另外,当重载运算符时,为什么常见的是使用const?

声明参数

4 个答案:

答案 0 :(得分:14)

在这种情况下,您将返回对ostream对象的引用。严格认为&符号作为“地址”并不总是适合你。 Here来自C ++ FAQ Lite的一些关于参考文献的信息。

就const来说,const正确性在C ++类型安全性中非常重要,你可以尽可能多地做。 FAQ中的另一个page在这方面有所帮助。 const可帮助您避免与副作用相关的更改,在您可能没有预料到的情况下弄乱数据。

答案 1 :(得分:7)

根据&符号的上下文,它可能意味着2种不同的东西。你的具体问题的答案是它是一个参考,而不是“地址”。它们是非常不同的东西。了解差异非常重要。

C++ Reference

使参数const的原因是确保它们不被函数更改。这保证了函数的调用者不会改变它们传入的参数。

答案 2 :(得分:3)

这意味着该变量是一个参考。它有点像指针,但不是真的。

请参阅:Reference (C++)

答案 3 :(得分:3)

在C ++类型声明中,&符表示“引用”。在这种情况下,operator <<会返回对ostream对象的引用。

由于它实际返回*this,它实际上是同一个ostream对象,这意味着您可以将调用链接到operator <<,类似于:

os << "Hello" << " " << "World" << endl;