2012-04-16 131 views
1

我很困惑,爲什麼我需要從下面的書中爲本例中的返回類型和參數列表使用引用。他們有什麼理由,除了它佔用內存少於使用按值傳遞複製所有內容?或者如果我想做級聯,它是否需要處理更多?C++類運算符重載參考

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

這意味着你可以將呼叫連鎖在一起。 'cin >> a >> b >> c;' – 2012-04-16 07:17:20

回答

4

因爲)流是不可拷貝,B)從流獲取輸入手段變異,所以你需要修改原來的,而不是一個副本(但會是這樣實現的)。並且參考PhoneNumber應該是顯而易見的 - 您從流中獲取輸入並輸入該對象。如果您通過複製傳遞它,那麼在操作員之外就不會看到它,這會使整個練習變得毫無意義。

1

你使用指針和引用的最大原因並不是因爲它允許你使用更少的內存(儘管它確實如此),而是因爲它可以讓你使用更少的時間。複製對象需要時間,您經常需要分配額外的內存,然後最終解除分配內存。更重要的是,諸如流這樣的對象根本不打算被複制:它們包含與物理對象相關的內部狀態, - 磁盤或網絡流上的文件,以及它們相關的緩衝區,複製沒有多大意義。