2012-04-16 18 views
1

私は以下の本のこの例の戻り値の型とパラメータリストの参照を使用する必要があるのは混乱しています。それ以外にも何らかの理由で、値渡しを使用してすべてがコピーされるよりも、メモリが少なくなりますか?カスケーディングをしたいのであれば、もっと処理しなければなりませんか?C++クラス演算子オーバーロード参照

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

これは、コールを連鎖させることができることを意味します。 'cin >> a >> b >> c;' –

答えて

4

)ストリームはコピー可能ではないので、ストリームからb)になって入力がそれを変異を意味するので、あなたは、元のではなくコピーを変更する必要があります(ただし、それは)実現されるだろう。そして、PhoneNumberへの参照は明らかでなければなりません。あなたはストリームからそのオブジェクトに入力を受け取ります。コピーで渡すと、それはオペレータの外には見えません。そのため、エクササイズ全体が無意味になります。

1

ポインタと参照を使用する最大の理由は、メモリを少なくすることはできますが(それは間違いありませんが)、使用時間が短縮されるためです。オブジェクトのコピーには時間がかかるため、追加のメモリを割り当て、最後に割り当てを解除する必要があります。

さらに重要なことに、ストリームなどのオブジェクトは、物理オブジェクトに関連する内部状態、ディスク上のファイルまたはネットワークストリーム、およびそれらに関連するバッファ、コピーするのはあまり意味がありません。

関連する問題