C++static,const,static const

1445 ワード

constで定義された定数は、その役割ドメインを超えた後に解放され、staticで定義された静的定数は、関数の実行後に記憶領域を解放しません.
staticは静的を表す.クラスの静的メンバー関数、静的メンバー変数は、クラスの特定のオブジェクトではなく、クラスに関連しています.特定のオブジェクトがなくても、クラスの静的メンバー関数とメンバー変数を呼び出すことができます.一般的なクラスの静的関数はほとんどグローバル関数ですが、その役割ドメインはファイルに限られています.
C++では、static静的メンバー変数はクラスの内部で初期化できません.クラスの内部で宣言するだけで、定義はクラス定義体の外部にある必要があります.通常、クラスの実装ファイルで初期化されます.例えば、double Account::Rate=2.25;staticキーワードはクラス定義体内部の宣言にのみ使用でき、定義時にstaticと表示できません.
C++ではconstメンバー変数もクラス定義で初期化できません.コンストラクション関数初期化リストのみで行い、コンストラクション関数が必要です.
constデータメンバーは、あるオブジェクトの生存期間内にのみ定数であり、クラス全体に対して可変である.クラスは複数のオブジェクトを作成できるため、constデータメンバーの値が異なるオブジェクトもあります.クラスのオブジェクトが作成されていない場合、コンパイラはconstデータメンバーの値が何であるか分からないため、クラスの宣言でconstデータメンバーを初期化することはできません.
constデータメンバーの初期化はクラスの構造関数の初期化リストでのみ行うことができます.クラス全体で一定の定数を確立するには、クラス内の列挙定数で実現するか、static cosntを使用します.
次に、彼らのアプリケーションの例を示します.
#include <iostream>
using namespace std;
class A
{
public:
      A(int a);
      static void print();//      
private:
       static int aa;//         
       static const int count;//        (           )
       const int bb;//      
};
int A::aa=0;//       +   
const int A::count=25;//        +   
A::A(int a):bb(a)//        
{
      aa+=1;
}
void A::print()
{
      cout<<"count="<<count<<endl;
      cout<<"aa="<<aa<<endl;
}

void main()
{
      A a(10);
      A::print();//           
      a.print();//            
}