30

私はポインタについてすべて知っています。アンパサンドは「のアドレス」を意味しますが、この状況ではどういう意味ですか?

また、演算子をオーバーロードするときに、constを使用してパラメーターを宣言するのが一般的であるのはなぜですか?

4

4 に答える 4

18

その場合、ostreamオブジェクトへの参照を返します。アンパサンドを「のアドレス」として厳密に考えると、必ずしもうまくいくとは限りません。参照に関するC++FAQLiteからの情報を次に示します。

constに関する限り、constの正確性は、C ++型の安全性において非常に重要であり、できる限り多くのことを実行したいと思うでしょう。FAQの別のページがその点で役立ちます。constは、予期しない状況でデータを台無しにする副作用関連の変更からあなたを助けます。

于 2009-10-15T12:23:24.963 に答える
10

アンパサンドのコンテキストに応じて、2つの異なる意味を持つ可能性があります。あなたの特定の質問に対する答えは、それが「のアドレス」ではなく、参照であるということです。それらは非常に異なるものです。違いを理解することは非常に重要です。

C++リファレンス

パラメーターをconstにする理由は、パラメーターが関数によって変更されないようにするためです。これにより、関数の呼び出し元が渡すパラメーターが変更されないことが保証されます。

于 2009-10-15T12:25:00.967 に答える
4

これは、変数が参照であることを意味します。ポインタのようなものですが、実際にはそうではありません。

参照:リファレンス(C ++)

于 2009-10-15T12:22:37.470 に答える
4

C ++型宣言では、アンパサンドは「参照」を意味します。この場合operator <<、オブジェクトへの参照を返しostreamます。

*this実際には同じオブジェクトを返すため、次のように、へのostream呼び出しを連鎖させることができますoperator <<

os << "Hello" << " " << "World" << endl;
于 2009-10-15T12:22:58.380 に答える