2017-09-13 13 views
-5

私の質問は、演算子のオーバーロードでパラメータを含むクラスオブジェクトの1つを持つ必要がある理由です。オペレータのオーバーロードでパラメータの1つが型を含む理由

+0

私に正しい答えが見つかりませんでした。その理由は、誰かが答えを持っている場合に私が投稿している理由です。 –

+0

あなたが何を求めているのかわかるように、いくつかのコードを含めてください。 – mjwills

答えて

0

オペランドには特定のクラス/構造体がオーバーロードされています。これは、少なくとも1つのオペランドが同じ型でなければならないことを意味します。つまり、オペランドはパラメータによって定義されます。

オーバーロードされた演算子をどのように使用するか、特に++のような単項演算子を使用する方が簡単です。明らかに、オーバーロードされた++を呼び出すには、それをオーバーロードした型のクラスに適用する必要があります。そうでなければ、オーバーロードされた演算子を呼び出すことをコンパイラがどのように知っていますか?

同様に、バイナリ演算子では、コンパイラは、オーバーロードされた演算子が定義されている場所を知る必要があります。クラスBとCのパラメータを使用してクラスAの+演算子をオーバーロードし、次にBのインスタンスをCのインスタンスに追加しようとすると、コンパイラはAでオーバーロードされた演算子を使用するつもりであると思いますか?クラスBとクラスCでも+演算子がオーバーロードされた場合はどうなりますか?

関連する問題