事前および事後インクリメントのための演算子のオーバーロード
この調査では、事前インクリメントと事後インクリメントの両方を容易にするために演算子をオーバーロードする実現可能性を詳しく調べます。インクリメント操作。事前インクリメント (SampleObject ) では、値が返される前にオブジェクトがインクリメントされます。ポストインクリメント (SampleObject) はオブジェクトをインクリメントし、その元の値を返します。
演算子のオーバーロードを通じてこれらの操作を実装するには、戻り値の型の制限を理解する必要があります。戻り値の型に基づくオーバーロードは許容されているように見えますが、曖昧さの問題が生じます。演算子のオーバーロードにより、組み込み型の機能がユーザー定義型に拡張されます。しかし、ユーザー定義型で前置増分と事後増分が共存できない理由は依然として不明です。
この曖昧さを解決するために、後置増分演算子はダミーの int パラメータを利用します。
<code class="cpp">// Prefix Sample& operator++() { // Increment logic on this instance; return reference to it. return *this; } // Postfix Sample operator++(int) { Sample tmp(*this); operator++(); // Prefix-increment this instance return tmp; // Return value before increment }</code>
これにより、このアプローチでは、前インクリメント演算子はインクリメントされたオブジェクトへの参照を返しますが、後インクリメント演算子はインクリメント操作前のオブジェクトのコピーを返します。
以上がC で前インクリメントと後インクリメントの両方の演算子をオーバーロードできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。