事前および事後インクリメントのための演算子のオーバーロード
この調査では、事前インクリメントと事後インクリメントの両方を容易にするために演算子をオーバーロードする実現可能性を詳しく調べます。インクリメント操作。事前インクリメント (SampleObject ) では、値が返される前にオブジェクトがインクリメントされます。ポストインクリメント (SampleObject) はオブジェクトをインクリメントし、その元の値を返します。
演算子のオーバーロードを通じてこれらの操作を実装するには、戻り値の型の制限を理解する必要があります。戻り値の型に基づくオーバーロードは許容されているように見えますが、曖昧さの問題が生じます。演算子のオーバーロードにより、組み込み型の機能がユーザー定義型に拡張されます。しかし、ユーザー定義型で前置増分と事後増分が共存できない理由は依然として不明です。
この曖昧さを解決するために、後置増分演算子はダミーの int パラメータを利用します:
// 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
}
このアプローチでは、前インクリメント演算子はインクリメントされたオブジェクトへの参照を返し、後インクリメント演算子はインクリメント操作前のオブジェクトのコピーを返します。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3