コードコンプリート2のこの段落は逆ですか、それとも誤解していますか?


8

第13章では、ポインターについて話すときに段落があります。

ただし、場合によっては、参照渡しのセマンティクス、つまり、渡されたオブジェクトを値渡しの実装で変更しない、つまり、コピーではなく実際のオブジェクトを渡す必要がある場合があります。

著者は間違いを犯し、2つを混同したようです。これは本当ですか、それとも私は彼が正しく言っていることを理解していませんか?

回答:


12

あなたは正しい、これはすでに本の正誤表のページにあります。

参照は値である必要があります333ページで、変更:「ただし、参照渡しのセマンティクスが必要な場合があります」「値渡しのセマンティクスが必要な場合があります」へ

値は参照である必要があります333ページで、「値による受け渡しの実装を使用して」に変更します。


3

はい、混同しているようです。それを切り替えて、もう少し追加してください。

場合によっては、値渡しの実装が必要な場合があります。つまり、渡されたオブジェクトはコピーであり、変更は元のオブジェクトには影響しません。参照渡しのセマンティクスでは、オブジェクト自体は渡されません。

これは、const参照パラメーターのようなものです。これにより、特定の関数のコンテキスト内で不変である、大きくて変更可能な構造を持つことができます。


1
「実装」と「セマンティクス」、「値」と「参照」を切り替えるつもりですか?私にとっては、「実装」と「セマンティクス」をそのまま維持し、「値」と「参照」のみを切り替えたほうが理にかなっているからです。「const参照パラメータ(存在しない)」とはどういう意味ですか?const参照は存在します。
sepp2k 2012年

2
どういう意味ですか、存在しませんか?const T&C ++には絶対に存在します。
DeadMG 2012年

1
constリファレンスに関する私の間違い。
jmoreno 2012年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.