【C++ベース】——constとは何ですか?いつ使いますか.マクロ定義との違い

2795 ワード

基礎知識:
  • 参照reference:参照:複合タイプ、変数の別の名前、あだ名に相当し、コピーによるメモリ損失を節約し、実際のプログラムでは、主に関数の形式パラメータとして使用されます.
  • クラスclass:メンバー変数とメンバー関数を含むメモリを消費しない図面と理解されます.オブジェクトはクラスのインスタンス化であり、部品と見なすことができます.
  • ポインタpointer:ポインタも変数です!ポインタの内容はアドレスです!

  • 〇、constって何?
  • 簡単な理解:constの目的は、「変更されない定数」
  • を定義することです.
  • は、変数、参照、ポインタを修飾することができ、関数パラメータ、メンバー関数修飾に使用することができる.メンバー変数.
  • の役割:constを使用するとコードエラーの確率を減らすことができます!magic numberおよび拡張プログラムの読み取りを回避します.この定数は、プログラムの他の場所でこの値を誤って修正することを防止するだけでなく、プログラマーがこの値の大きさを容易に調整することができます.
  • とマクロ定義#defineの違い:constにはタイプがあり、タイプチェックを行うことができますが、マクロ定義にはありません.
  • 定数ポインタとポインタ定数ポインタ(定数を指すポインタ)ポインタ定数(アドレスは定数、ポインタが指すアドレスは不変)
  • .
  • Const値は作成後は変更できないため、constオブジェクトを初期化する必要があります.

  • 一、constの初期化:
    const値は作成後は変更できないため、constオブジェクトを初期化する必要があります.
    const int i=0;//  
    const int i;//  
    

    constオブジェクトは、非constオブジェクトで初期化したり、非constオブジェクトに割り当てたりすることができます.また、初期化後に値を変更しない限り、演算にも参加できます.
    int i;
    const int j=i;//  
    int m=j;//  
    

    二、constの役割ドメイン:
    デフォルトでは、constオブジェクトはファイル内でのみ有効であり、異なるファイルのconstオブジェクトは同じオブジェクトではありません.
    ファイル間で共有できる方法:externを使用して問題を解決できます.
    三、constと引用
    constリファレンスはconstへのリファレンスです
  • 定数への参照は、const:
  • を使用する必要があります.
    const int c=42;
    
    int &r1 = c;      //  ,                ,       
    
    const int &r2 = c; //  ,            
    

    四、constとポインタ:
    重要!重要!重要!コードに向かって読む:
  • アスタリスク*をポインタとして読み、
  • constを定数
  • と読む
  • とても簡単です!!!例えば、const int*pは、定数ポインタint*const pは、ポインタ定数
  • である.
  • 定数参照と同様に、定数を指すポインタはconstポインタ(定数を指すポインタ)
  • を使用する必要があります.
    const int c=42;
    
    int *r1=&c;      //  
    
    const int*r2=&c;//  
    
    *r2=42;//  ,           
    
  • 定数ポインタ(constを指すポインタ)とポインタ定数(constポインタ)
  • ぶんかつ
  • 定数ポインタ(定数を指すポインタ)は、メモリ中のデータのみを読み取ることができるが、メモリ中のデータの属性を変更できないポインタであり、定数を指すポインタと呼ばれ、定数ポインタと略称される.および
  • ポインタ定数(アドレスは定数、ポインタが指す位置(アドレス)は不変、ポインタ自体は定数であるが、ポインタが指す内容は変更可能)
  • .
    (前の2文字を形容詞として修飾した後の2文字.同時にconstポインタという言い方にも注意し、定数ポインタと理解しないでください)
    Int num=0;
    
    Int*const cur=#//    num
    
    Const double pi=3.1415;
    
    Const double * const pip=π//         。
    

    次に、定数ポインタドメインのポインタ定数をどのように区別するかを例に挙げて説明します.
  • int const* cur; 定数ポインタ、定数を指すポインタ
  • 2.Const int * cur; 定数ポインタ
  • int*const cur; ポインタ定数
  • const(int *) cur;//間違いです.そう書いてはいけません.
    識別テクニック:コードに向かって読んで、星号をポインタに読んで、constを定数に読んで、とても簡単です.Step 1:const * , ——「const前定数ポインタ」Step 2:const * , ——「const後ポインタ定数」
    五、constとクラス:
  • constメンバー変数:クラスで宣言された変数はconstタイプです.ただし初期化はできません.コンストラクション関数初期化リストで初期化する必要があります.このような変数は実は1つのオブジェクトの中で不変であるだけで,クラス全体で不変であるためにはenum(列挙)
  • を用いなければならない.
  • constメンバー関数:このようなメンバー関数では、データ・メンバーを変更できません.メンバー変数を変更したり、他の非constメンバー関数を呼び出したりすると、エラーが表示されます.