C では、コードの明瞭さを維持しながら効率を最適化するために、パラメータを正しく渡すための特定のガイドラインがあります。
左辺値による受け渡しReference: 関数が渡された元のオブジェクトを変更する必要がある場合に、これを使用します。変更は呼び出し側に表示されます。
左辺値参照を const: に渡します。オブジェクトを変更したりコピーを作成したりせずに、オブジェクトの状態を観察する必要があります。
値による渡し: を選択これは、関数が元のオブジェクトを変更せず、それを観察するだけでよい場合です。これは、コピーが高速な基本型に推奨されます。
右辺値の場合は、右辺値参照によって渡します: これにより、不必要な移動やコピーが回避されます。完全転送を使用して左辺値と右辺値の両方を処理し、効率的なバインディングを確保します。
コンストラクター オーバーロードを使用する: 左辺値参照と右辺値参照のオーバーロードを定義します。これにより、コンパイラはパラメーターの型に基づいて正しいオーバーロードを選択し、不必要なコピーや移動がなくなるようにします。
次のガイドラインを考慮して CreditCard の例をもう一度見てみましょう。
右辺値でクレジットカードを渡すReference:
Account(std::string number, float amount, CreditCard&& creditCard): number(number) , amount(amount) , creditCard(std::forward<CreditCard>(creditCard)) {}
これにより、引数として渡された右辺値 CreditCard からの移動が保証されます。
コンストラクターのオーバーロードを使用します:
Account(std::string number, float amount, const CreditCard& creditCard): number(number) , amount(amount) , creditCard(creditCard) {} Account(std::string number, float amount, CreditCard&& creditCard): number(number) , amount(amount) , creditCard(std::move(creditCard)) {}
これにより、コンパイラは、左辺値からコピーするか、左辺値から移動して、正しいオーバーロードを選択できるようになります。 rvalue.
これらのガイドラインを適用すると、コードの明瞭さと効率を維持しながら、 C で渡すパラメーターを最適化できます。
以上がC でのパラメーターの受け渡しを最適化する方法: 左辺値、右辺値、およびベスト プラクティス?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。