私はポインタについてすべて知っています。アンパサンドは「アドレス」を意味しますが、この状況ではどういう意味ですか?
また、演算子をオーバーロードするときに、constでパラメーターを宣言するのが一般的であるのはなぜですか?
アンパサンドのコンテキストに応じて、2つの異なる意味を持つ可能性があります。あなたの特定の質問に対する答えは、それが「の住所」ではなく、参照であるということです。それらは非常に異なるものです。違いを理解することは非常に重要です。
パラメーターをconstにする理由は、パラメーターが関数によって変更されないようにするためです。これにより、関数の呼び出し元が渡すパラメーターが変更されないことが保証されます。
C++型宣言では、アンパサンドは「参照」を意味します。この場合、operator <<
はostream
オブジェクトへの参照を返します。
実際には*this
を返すため、実際には同じostream
オブジェクトであり、次のようにoperator <<
への呼び出しをチェーンできることを意味します。
os << "Hello" << " " << "World" << endl;
これは、変数が参照であることを意味します。ポインタのようなものですが、実際にはそうではありません。
参照: 参照(C++)