質問: 以前シャローコピー、ディープコピーとはという質問をしたのですが、**「値渡し」や「参照渡し」という用語は引数で渡すときしか使わない**というコメントと、**代入でもその用語を使う**というコメントをいただいたのですが、どちらがより正しいのでしょうか? また、**シャローコピーは、1段だけコピーすること**という回答に対して**1段だけコピーすること=シャローコピーではない**という回答をいただきましたが、どちらが正しいのでしょうか? よろしくお願いします。
回答: このあたり、言葉だけじゃなくて、箱と矢印を使った絵が、入門書にはきっと載っていると思いますので、書籍を参照されるのも良いかと思います。 まず、「値渡し」「参照渡し」ですが、言葉をどう使うのかは人の自由ですが、本来的な意味では引数でだけ使います。代入も、引数受け渡しと概念が似ているので、転用する人もいるのでしょう。 英語だと、「call by value」「call by reference」と、「call」が入りますので、代入では使えません。 「1段だけコピーすること=シャローコピーではない」については言葉の意味としてはその通りで、三段階に参照で繋がったオブジェクトの場合、1段だけコピーも、2段だけコピーもシャローコピーです。三段全部コピーして初めてディープコピーです。参照の矢印で繋がった先端まで全部コピーしない限りはオブジェクトの共有が起こります。