C ++

 Computer >> コンピューター >  >> プログラミング >> C ++
  1. C / C++の#include<filename>と#includefilenameの違いは?

    2つの形式の違いは、プリプロセッサが含まれるファイルを検索する場所にあります。 #include プリプロセッサは、実装に依存する方法で検索し、コンパイラによって事前に指定されたディレクトリを検索します。このメソッドは通常、標準ライブラリヘッダーファイルをインクルードするために使用されます。 #include filename プリプロセッサは、ディレクティブを含むファイルと同じディレクトリを検索します。これが失敗すると、#includeフォームのように動作し始めます。このメソッドは通常、独自のヘッダーファイルをインクルードするために使用されます。

  2. newを使用してC++で2次元配列を宣言するにはどうすればよいですか?

    動的2D配列は、基本的に配列へのポインターの配列です。したがって、最初にポインタの配列をポインタに初期化してから、ループ内の各1D配列を初期化する必要があります。 例 #include<iostream> using namespace std; int main() {    int rows = 3, cols = 4;    int** arr = new int*[rows];    for(int i = 0; i < rows; ++i)    arr[i] = new int[co

  3. 可変長配列がC++標準の一部ではないのはなぜですか?

    スタック上に潜在的に大きな配列を作成する必要がありますが、これは通常、使用可能なスペースがほとんどないため、適切ではありません。サイズが事前にわかっている場合は、静的配列を使用できます。また、事前にサイズがわからない場合は、安全でないコードを記述します。可変長配列は、型システムで大幅な変更が必要になるため、C++にネイティブに含めることはできません。 C ++の可変長配列の代替は、ベクトルであるC++STLで提供されます。 -のように使用できます 例 #include<iostream> #include<vector> using namespace std; i

  4. C ++の3のルールと5のルール?

    三つのルールは、C++を使用する際の経験則です。これは、クラスで次のいずれかが必要な場合にと言う一種の良い習慣のルールです。 コピーコンストラクター 代入演算子 またはデストラクタ 明示的に定義されている場合は、3つすべてが必要になる可能性があります。 どうしてこれなの?これは、クラスが上記のいずれかを必要とする場合、動的に割り当てられたリソースを管理しており、それを正常に達成するには他のリソースが必要になる可能性があるためです。たとえば、代入演算子が必要な場合は、現在参照によってコピーされているオブジェクトのコピーを作成するため、リソースが割り当てられます。コピーにはコピーコンストラ

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

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

  6. C ++ vs C ++ 0x vs C ++ 11 vs C ++ 98

    C ++ 98 C++標準の初版でした。すべての基本的な言語構造、STL、および標準ライブラリを定義しました。 C ++ 03 この規格の次の改訂でした。これは、92のコア言語の欠陥レポート、125のライブラリの欠陥レポートを修正し、値の初期化という1つの新しい言語機能のみが含まれていたため、主に標準のバグ修正と見なされていました。 C ++ 0x 2008-09年までに完了する予定でしたが、2011年に最終的に完了した進行中の作業の名前でした。 C ++ 11 2011年に公開された最新のC++標準でした。これにより、既存の言語に多くの主要な拡張と改善がもたらされました。

  7. C ++の新しい配置の使用は何ですか?

    簡単に言うと、配置newを使用すると、特定の変数にすでに割り当てられているオブジェクトをメモリ上に「構築」できます。これは、すでに割り当てられているのと同じメモリを再割り当ておよび再利用しない方が高速であるため、最適化に役立ちます。次のように使用できます- new (address) (type) initializer 指定されたタイプの新しいオブジェクトを作成するアドレスを指定できます。 例 #include<iostream> using namespace std; int main() {    int a = 5;    cou

  8. C++0xとC++11の違いは何ですか?

    C ++およびC標準は通常、公開された年にちなんで名付けられます。たとえば、C ++では、元の標準は1998年に公開されたため、C++98と呼ばれます。 、および2003年に公開された最初の修正は、C++03と呼ばれます。 次の改訂では、次の標準は2008年までに行われると想定されていましたが、不確実であったため、C ++ 0xと名付けられ、xは8または9を表します。計画は変わりましたが、現在はC++11と呼ばれています。したがって、C ++ 0xは、公開される前の標準の名前でした。 2011年に完成すると、C++11という名前になりました。

  9. -std =c++11と-std=gnu ++ 11の違いは何ですか?

    GNU C++コンパイラg++は、C++言語の拡張機能を提供します。 2つのオプションの違いは、C++標準に違反する可能性のあるこれらのGNU拡張機能が有効になっているかどうかです。一部の拡張機能は、標準に違反していなければ、-std =c++11を使用しても有効である可能性があることに注意してください。 GNUコンパイラのC++言語の拡張機能のリストはここにあります-https://gcc.gnu.org/onlinedocs/gcc/C_002b_002b-Extensions.html

  10. GCCでのC++標準のサポート

    GCCは、公開されている複数のISO規格に対応する、C++のさまざまな方言をサポートしています。実装する標準は、-std=コマンドラインオプションを使用して選択できます。 C ++ 98 − GCCは、2003年に変更され、C++03およびその後のいくつかの欠陥レポートに名前が変更された1998C++標準を完全にサポートしています。 C ++ 11 − GCC 4.8.1は、以前はC++0xとして知られていた2011C++標準の最初の完全な実装でした。 C ++ 14 − GCCは、2014年に公開されたC++標準の最新リビジョンを完全にサポートしています。 C ++ 1

  11. C++11での最大の変更点

    C ++ 11は、2011年に公開された最新のC ++標準でした。これにより、既存の言語に多くの主要な拡張と改善がもたらされました。以下は、C++11の主な変更/追加です- イニシエーターリスト 自動型控除 参照の再評価とコンストラクターの移動 constexpr –一般化された定数式 プレーンな古いデータの定義の変更 均一な初期化 範囲ベースのforループ ラムダ関数と式 代替関数の構文 明示的なオーバーライドと最終 定数nullポインター、nullptr 強く型付けされた列挙 直角ブラケットが適切な場所でオペレーターとして扱われていない 可変個引数テンプレート マルチスレッドメモリモ

  12. C++11の概要

    C ++ 11は、2011年に公開された最新のC ++標準です。これにより、既存の言語に多くの主要な拡張と改善がもたらされました。 2011年8月12日に国際標準化機構(ISO)によって承認され、C++03に取って代わりました。 C++11はC++0xとも呼ばれていました。これは、次の改訂では、2008年までに次の標準が作成されると想定されていたためですが、不確実であったため、C ++ 0xと名付けられ、xは8または9のいずれかを表しました。現在はC++11と呼ばれています。したがって、C ++ 0xは、公開される前の標準の名前でした。 2011年に完成すると、C++11という名前になりまし

  13. C ++のPODタイプとは何ですか?

    PODはC++の頭字語で、単純な古いデータを意味します。これは、メンバー変数のみを持ち、メソッド、コンストラクタ、デストラクタ、仮想関数などを持たないクラス/構造体です。たとえば、 例 #include<iostream> using namespace std; // POD struct MyStruct {     int key;     string data; }; int main() {     struct MyStruct s;     s.key = 1;    

  14. C ++ 11のラムダ式とは何ですか?

    C ++ STLには、std::for_eachのような便利なジェネリック関数が含まれています。残念ながら、特に適用したいファンクターが特定の機能に固有である場合は、使用するのが非常に面倒になる可能性があります。したがって、作成するこの関数は、その1つの場所で使用されている名前空間に含まれます。これに対する解決策は、無名関数を使用することです。 C++ではC++11にラムダ式が導入され、無名関数を作成できるようになりました。 例 #include<iostream> #include<vector> #include <algorithm> // for_e

  15. C ++のアグリゲートとPODとは何ですか?

    PODはC++の頭字語で、単純な古いデータを意味します。これは、メンバー変数のみを持ち、メソッド、コンストラクタ、デストラクタ、仮想関数などを持たないクラス/構造体です。たとえば、 例 #include<iostream> using namespace std; // POD struct MyStruct {    int key;    string data; }; int main() {    struct MyStruct s;    s.key = 1;    s.

  16. C ++標準のint、long型のサイズはどれくらいですか?

    C ++標準では、整数型のサイズをバイト単位で指定していません。これらのタイプが保持できる必要がある最小範囲を指定します。 ビット単位のサイズは、指定された最小範囲から簡単に見つけることができます。 標準を参照していませんが、さまざまなプラットフォームで一般的に使用されるサイズは- 32ビットシステムの場合、標準はILP32です。つまり、int、long、およびポインターはすべて32ビットの量です。 64ビットシステムの場合、Unix標準はLP64です。longとポインタは64ビットです(ただし、intは32ビットです)。 Windows 64ビット標準はLLP64です— longとp

  17. 範囲外の配列にアクセスしてもC++でエラーが発生しないのはなぜですか?

    これは、C++が境界チェックを行わないためです。 JavaやPythonなどの言語には境界チェックがあるため、範囲外の要素にアクセスしようとすると、エラーがスローされます。 C ++の設計原則は、同等のCコードよりも遅くならないようにすることであり、Cは配列境界チェックを行いません。 したがって、これを範囲外のメモリにアクセスしようとすると、C ++標準で記述されているため、プログラムの動作は定義されません。一般に、未定義の動作に遭遇すると、何かが起こる可能性があります。アプリケーションがクラッシュしたり、フリーズしたり、正常に動作したり(または少なくとも正常に動作しているように見えたり)、他

  18. C ++の関数にオブジェクトを渡す方法は?

    オブジェクトを関数に渡すには4つの方法があります。クラスXがあり、それを関数funに渡したいとしましょう。次に、- 値渡し これにより、関数スコープにオブジェクトの浅いローカルコピーが作成されます。ここで変更したものは、渡されたオブジェクトには反映されません。たとえば、 宣言 void fun(X x); 電話 X x; fun(x); 参照渡し これにより、オブジェクトへの参照が関数に渡されます。ここで変更したものは、渡されたオブジェクトに反映されます。オブジェクトのコピーは作成されません。たとえば、 宣言 void fun(X &x); 電話 X

  19. C ++で整数のオーバーフローを検出する方法は?

    唯一の安全な方法は、オーバーフローが発生する前にオーバーフローをチェックすることです。ただし、整数のオーバーフローをチェックするためのハッキーな方法がいくつかあります。したがって、unsigned int加算のオーバーフローを検出することを目的としている場合は、結果が実際にいずれかの付加価値よりも小さいかどうかを確認できます。たとえば、 unsigned int x, y; unsigned int value = x + y; bool overflow = value < x; // Alternatively "value < y" should also

  20. コンマ演算子はC++でどのように機能しますか

    コンマ演算子の目的は、複数の式を組み合わせることです。式のコンマ区切りリストの値は、右端の式の値です。カンマの効果は、一連の操作を実行できるようにすることです。 他の式の値は破棄されます。つまり、右側の式がカンマ区切りの式全体の値になります。 例 次のプログラムは、コンマ演算子の動作を示しています- #include <iostream> using namespace std; int main() {    int i, j;    j = 10;    i = (j++, j+100, 999+j);  

Total 5992 -コンピューター  FirstPage PreviousPage NextPage LastPage CurrentPage:12/300  20-コンピューター/Page Goto:1 6 7 8 9 10 11 12 13 14 15 16 17 18