当在类名(如 ostream&)后面使用时,& 符号代表什么?运算符 <<(...)?
我知道有关指针的所有信息,而“&”符号的意思是“地址”,但在这种情况下它是什么意思?
另外,重载运算符时,为什么常将参数声明为const?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
我知道有关指针的所有信息,而“&”符号的意思是“地址”,但在这种情况下它是什么意思?
另外,重载运算符时,为什么常将参数声明为const?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(4)
在这种情况下,您将返回对 ostream 对象的引用。严格将&符号视为“地址”并不总是适合您。 这里是来自 C++ FAQ Lite 的一些参考信息。
就 const 而言,const 正确性在 C++ 类型安全中非常重要,也是您想要尽可能多做的事情。常见问题解答中的另一个页面在这方面有所帮助。 const 可以帮助您避免与副作用相关的更改在您可能意想不到的情况下弄乱您的数据。
In that case you are returning a reference to an ostream object. Strictly thinking of ampersand as "address of" will not always work for you. Here's some info from C++ FAQ Lite on references.
As far as const goes, const correctness is very important in C++ type safety and something you'll want to do as much as you can. Another page from the FAQ helps in that regard. const helps you from side effect-related changes mucking up your data in situations where you might not expect it.
根据 & 符号的上下文,它可能表示两种不同的含义。您的具体问题的答案是,它是一个参考,而不是“地址”。它们是非常不同的东西。了解其中的差异非常重要。
C++ 参考
将参数设置为 const 的原因是为了确保它们不会被更改的功能。这保证了函数的调用者传入的参数不会被更改。
Depending on the context of the ampersand it can mean 2 different things. The answer to your specific question is that it's a reference, not "the address of". They are very different things. It's very important to understand the difference.
C++ Reference
The reason to make parameters const is to ensure that they are not changed by the function. This guarantees the caller of the function that the parameters they pass in will not be changed.
这意味着该变量是一个引用。它有点像指针,但又不是。
请参阅:参考 (C++)
It means that the variable is a reference. It's kind of like a pointer, but not really.
See: Reference (C++)
在 C++ 类型声明中,& 符号表示“引用”。在这种情况下,运算符<<返回对
ostream
对象的引用。由于它实际上返回
*this
它实际上是相同的ostream
对象,并且意味着您可以链接调用operator <<
,类似于此:In C++ type declarations, the ampersand means "reference". In this case
operator <<
returns a reference to anostream
object.Since it actually returns
*this
it's actually the sameostream
object, and means you can chain calls tooperator <<
, similar to this: