C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C ++ 11の5つのルールとは何ですか?


リソース管理のためにC++では5の法則が適用されます。リソース管理により、クライアントは管理対象オブジェクトの存続期間について心配する必要がなくなり、C++コードのメモリリークやその他の問題がなくなる可能性があります。しかし、この管理にはコストがかかります。ビッグファイブのルールでは、次の関数の1つを作成する必要がある場合は、それらすべてのポリシーを設定する必要があると規定されています。 Object Fooがある場合は、リソースFooを処理するFooManagerを使用できます。 FooManagerを実装する場合、実装するには次の関数が必要になる可能性があります-

  • デストラクタ −このマネージャーが範囲外になると、管理していたすべてのリソースを解放する必要があります。

  • 代入演算子 −指定しない場合、コンパイラはデフォルトの代入演算子を作成します。デフォルトの代入操作はメンバー単位のコピー機能であり、ディープコピーではなくシャローコピーを実行します。これにより、メモリリーク、誤った割り当てなどの問題が発生する可能性があります。

  • コピーコンストラクタ −コンパイラが提供するコピーコンストラクタは、FooManagerのすべての属性のメンバーごとのコピーを実行します。これは、割り当てオペレーターと同じ問題を引き起こします。

  • コンストラクターの移動 −オブジェクトのコピーには、一時オブジェクトの作成、コピー、および破棄が含まれるため、コストがかかる可能性があります。 C ++ 11では、r値参照の概念が導入されました。 r値参照は、r値に明示的にバインドできます。 r値は名前のないオブジェクトです。言い換えれば、一時オブジェクト。このr値参照をコンストラクターで使用して、渡されたr値への参照を作成できます。

  • ムーブ代入演算子 −一度に1つのリソースのみを持つと便利です。このリソースの所有権は、あるマネージャーから別のマネージャーに譲渡できます。このような場合、ムーブ代入演算子を提供できます。

これは、5つのルールについて学ぶための優れたリソースです-https://www.feabhas.com/sites/default/files/2016-06/Rule%20of%20the%20Big%20Five.pdf。


  1. HTMLページの水平方向のルールとは何ですか?

    タグは、HTMLの水平方向のルールを表します。 HTMLページのコンテンツを分離します。 タグには終了タグがないことに注意してください。 HTMLページの…タグに追加されます。 例 次のコードを実行して、HTMLページに水平方向のルールを追加してみてください <!DOCTYPE html> <html>    <head>       <title>HTML Horizontal Rule</title>    </head>   &n

  2. システム リソースとは| |さまざまな種類のシステム リソース

    システム リソース: 機知に富むことは普遍的に魅力的な特性です。機知に富むということは、多くのリソースを自由に使えるが、自分の可能性を最大化する能力、またはいつでも利用できる限られたリソースを利用できるということではありません。これは、現実の世界だけでなく、日常生活で使用するようになったハードウェアやソフトウェアにも当てはまります。物事を大局的に見ると、パフォーマンス志向の車が望まれ、空想され、切望されているとしても、ほとんどの人に理由を尋ねた場合、たとえ手段があったとしても、誰もがスポーツカーやスポーツバイクを購入するわけではありません.そのような車両を購入しなかった人は、「それは実用的では