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

C++でのインラインとマクロの違い


この投稿では、C++のインラインとマクロの違いを理解します。

インライン

  • これはC++の関数です。

  • コンパイラによって解析されます。

  • クラスの内部または外部で定義できます。

  • 引数を1回だけ評価します。

  • コンパイラは、すべての関数を「インライン」関数に変換してすべて拡張するわけではありません。

  • クラス内で定義された短い関数は、自動的にインライン関数として作成されます。

  • クラス内のインライン関数は、クラスのデータメンバーにアクセスできます。

  • インライン関数は中括弧を使用して終了できます。

  • デバッグは簡単です。

  • これは、コンパイル中にエラーチェックが行われるためです。

  • 関数の本体にあるすべてのステートメントをバインドします。

inline return_type funct_name ( parameters ) {
   . . .
}

マクロ

  • プリプロセッサによって拡張されます。

  • プログラムの最初に定義されています。

  • コード内で使用されるたびに引数を評価します。

  • それらは常に拡張する必要があります。

  • 具体的に定義する必要があります。

  • 彼らがクラスのメンバーになることは決してありません。

  • クラスのデータメンバーにアクセスできません。

  • マクロの定義は新しい行で終わります。

  • コンパイル時にエラーチェックが行われないため、マクロをデバッグすることは困難です。

  • 終了記号がないため、複数のステートメントが含まれていると、バインディングの問題が発生します。

#define macro_name char_sequence

  1. C ++のドット(。)演算子と->の違いは何ですか?

    ドットと矢印の演算子は、どちらもC++でクラスのメンバーにアクセスするために使用されます。それらはさまざまなシナリオで使用されます。 C ++では、class、struct、またはunionとして宣言された型は、「クラス型」と見なされます。したがって、以下は3つすべてを指します。 a.bは、bがオブジェクトのメンバー(またはオブジェクトへの参照[1])である場合にのみ使用されます。したがって、a.bの場合、aは常にクラスの実際のオブジェクト(またはオブジェクトへの参照)になります。 a→bは基本的に(* a).bの省略表記です。つまり、aがオブジェクトへのポインタである場合、a→bはポイ

  2. C#でのクラスと構造の違い

    クラスと構造を区別するには、最初に、データの保持と定義のコンテキストでは、構造とクラスの両方が同等であるように見えることを理解する必要があります。これらは両方とも、データメンバーにいくつかのデフォルト値を定義および保持することができます。しかし、この文脈を超えてそれらを考慮すると、クラスは構造と比較して機能性とともにより多くの柔軟性を提供します。 クラスと構造の重要な違いは次のとおりです。 Sr。いいえ。 キー クラス 構造 1 データ型 クラスで定義されたデータは参照としてメモリに保存され、アクセスするための特定のアドレスを持っているため、クラスは参照型であると言えます。