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

C ++の#defineとconstキーワードの違いは何ですか?


#defineディレクティブはプリプロセッサディレクティブです。プリプロセッサは、コンパイラがマクロを認識する前に、これらのマクロを本体に置き換えます。これは、ソースコードの自動検索と置換と考えてください。

const変数宣言は、言語で実際の変数を宣言します。これは、実際の変数のように使用できます。アドレスを取得し、渡し、キャストし、変換します。

コンパイラの最適化がないと、さまざまなケースでこれらの両方に関連するメモリ割り当ての隠れたコストが発生します。しかし、適切に最適化すれば、それらはほぼ同じになります。また、プリプロセッサマクロにはスコープがありませんが、const値にはスコープがあります。


  1. C ++のデストラクタとフリー関数の違いは何ですか?

    ここでは、C ++のデストラクタ関数とfree()関数の違いを確認します。デストラクタは、オブジェクトが破棄される直前に、何らかのアクションを実行するために使用されます。このアクションではメモリが解放されない場合がありますが、画面に1つのメッセージを表示するなどの簡単なアクションを実行できます。 free()関数はCで使用されます。C++では、deleteキーワードを使用しても同じことができます。 free()またはdeleteを使用してオブジェクトを削除すると、デストラクタが呼び出されます。デストラクタ関数は引数をとらず、何も返しません。この関数は、freeまたはdeleteが使用されたと

  2. const int *、const int * const、およびint const *の違いは何ですか?

    ここでは、整数ポインター、整数定数、および整数定数ポインターに基づくいくつかの異なるタイプの変数宣言を確認します。 それらを決定するために、時計回り/スパイラルルールを使用します。用語を話し合うことで、ルールも理解できます。 const int * 。これは、これがポインター型変数であることをコンパイラーに通知するために使用され、定数intのアドレスを格納できます。時計のルールはこのように言っています- もう1つはconstint*constです。これは、これが1つの定数ポインター変数であり、別の定数整数のアドレスを格納できることを示すために使用されます。時計のルールを適用する