C++staticキーワードまとめ

2420 ワード

  • 静的持続変数
  • クラスの静的データメンバー
  • クラス静的メンバー関数
  • 1.ストレージ持続性、役割ドメイン、およびリンク性(複数ライブラリのリンク)
    ノートにもう一度やってみてください.
  • ストレージ持続性:メモリに保存された時間.自動保存持続性:関数で定義された変数.関数コードブロックの実行後に解放されます.静的ストレージ持続性:関数定義外で定義された変数とキーワードstaticで定義された変数.プログラムの実行中に存在します.スレッドストレージ持続性:thread_localは、宣言サイクルが属するスレッドと同じ長さであることを宣言します.動的ストレージ持続性:new演算子が割り当てたメモリは常に存在し、delete演算子が解放されることを知っています.
  • 役割ドメイン:ファイル内で名前がどの程度表示されるかを説明します.
  • リンク:名前が異なるユニット間でどのように共有されるかを説明します.コードブロックは{}で囲まれた一連の文です.

  • 静的持続変数
  • 静的変数は、プログラムの実行中ずっと存在する.また、静的変数を表示する初期化しない場合、コンパイラはそれらを0に設定する.

  • 1.リンク性が外部の静的持続変数であり、コードブロックの外部で宣言する.リンク性は内部の静的持続変数であり、コードブロックの外部で宣言され、staticで修飾される.
  • リンク性のない静的持続変数は、コードブロック内部で宣言され、対応するコードの1,2,3
  • をstaticで修飾する.
    int globle = 1000;//    1.        ,               
    static int one_file = 50;//     2.            
    int main()
    {}
    void fun1(int n)
    {
            static int count =0;//    3.   fun1      ,    fun1     ,count      。
            count++;
            int llama=0;
    }
    void fun2()
    {
    }
    

    fun 1関数については、1回呼び出すcount=1である.2回呼び出すcount=2.fun 1を1回呼び出すと静的ローカル変数の値は変わらないが.2回目の呼び出しの過程で、前回の値に続いて演算を続ければよい.
    extern(参照宣言、略称宣言)は変数宣言空間を与えず、既存の変数を参照する
    2.クラスの静的メンバー
  • 静的クラスメンバー:オブジェクトがどれだけ作成されても、プログラムは静的クラス変数のコピーを1つだけ作成します.
  • class StringBad{
    private:
            static int num;
    };
    int StringBad::num = 10;//      ,        。
    
  • は、宣言がメモリの割り当て方法を記述しているが、メモリを割り当てていないため、クラス宣言で静的メンバー変数を初期化することはできません.
  • 初期化文はタイプを示し、役割ドメイン演算子::、キーワードstaticは使用されません.
  • 実メソッドファイルの初期化が行われます. const , 。-第十章
  • 参照
    class Bakery
    {
          const int Months =12;
          double costs[Months];
    };//                    。  Months       。
    

    2つの方法でMonthの初期化を実現できます
    class Bakery//            。Months      
    {
          emun {Months = 12};
          double costs[Months];
    };
    
    class Bakery//               ,         ,    Months  
    {
          static const int Months =12;
          double costs[Months];
    };
    

    3.静的|クラスメンバー関数
  • オブジェクトから静的メンバー関数を呼び出すことはできません.静的メンバー関数ではthisポインタは使用できません.静的メンバーが共有部分で宣言されている場合は、クラス名と役割ドメイン演算子を使用して呼び出すことができます.
  • class StringBad{
    private:
            static int num;
    public:
          static int Howmany()
          {
                return num;
          }
    };
    main
    int  count = StringBad::Howmany();
    
  • 静的メンバー関数は、特定のオブジェクトに関連付けられていないため、静的データ・メンバーのみが使用できます.