C ++で「==」演算子をオーバーロードする場合、同等性が明示的に意味するものに関する標準的な定義、または「==」がどのように動作するかに関する一連のガイドラインはありますか?
私は現在、自分自身全体をメモリに保存しないクラスを持っています。基本的に、優先キューを使用して、内部のオブジェクトが使用されている頻度を決定し、オブジェクトがキューの最後からポップされると、メモリから削除されてディスクに書き込まれます。
したがって、問題は平等で発生します。これらのオブジェクトの2つが等しいとはどういう意味ですか。すべての点で同じオブジェクトAとBから始めることができるため、それらは同じデータをメモリにロードし、ディスク上に同じデータを持っています。しかし、AとBで一連の関数を呼び出した後、それらは異なる可能性があります。AとBはまだディスク上に同じデータを持っていますが、それらはメモリにロードされた異なるデータを持っています。それで、問題はA == B
真か偽かを解決する必要があるかどうかです。
これがどのように機能するかを定義する一連のルールまたはガイドラインはありますか?それとも、これは、プログラムにとって何が最も理にかなっているのかを判断し、「==」が何をするのかを文書化するだけの状況ですか?