簡體   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