繁体   English   中英

C ++类运算符重载参考

[英]c++ class operator overloading reference

我很困惑为什么在下面的示例中,我到底为什么需要为返回类型和参数列表使用引用。 除了使用“按值传递”复制所有内容外,他们是否还需要占用更多内存? 或者,如果我想进行级联,是否还需要处理更多?

istream &operator>>( stream &input, PhoneNumber &number)
{
//input whatever
return input;
}

由于a)流不可复制,b)从流中获取输入意味着对其进行突变,因此您需要修改原始文件而不是副本(无论如何实现)。 并且对PhoneNumber引用应该很明显-您正在从流中获取输入并进入该对象。 如果要通过副本传递它,那么它将在操作员外部不可见,这使整个练习变得毫无意义。

使用指针和引用的最大原因不是因为它使您使用更少的内存(尽管确实如此),而是因为它使您使用了更少的时间。 复制对象需要时间,您通常需要分配额外的内存,然后最后将其释放。

甚至更重要的是,流之类的对象根本不打算被复制:它们包含与物理对象相关的内部状态-磁盘上的文件或网络流-以及与它们相关联的缓冲区,它们不会占用太多空间复制感。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM