C++のstaticとconstを深く分析する

933 ワード

constとstaticはC++でよく使われています.簡単に言えば、constはクラスのインスタンス化範囲内の定数を定義し、staticはクラスの静的メンバー変数がクラスのすべてのインスタンスオブジェクトによって共有されることを定義します.
もう一度詳しく説明します.
  • constメンバー変数はクラスの内部で初期化できません.一般的にはコンストラクション関数で初期化されます(したがってconstメンバー変数がある場合は明示的なコンストラクション関数が必要です).
  • staticクラスの静的メンバー変数もクラスの内部で初期化できません.静的メンバー変数はクラスのインスタンスではなくクラスに関連しています.一般的に静的メンバー変数の初期化はクラス定義体の外部(通常はクラスの実装ファイルで初期化)のみ可能である.例えばmain()関数でint testClass::basicValue=1で初期化される.
  • また、例外もあります!(STLソース・プロファイリングで1.9.3に記載の)classにconst static integral data memberが含まれている場合、C++標準規格に従ってclass内部に直接初期値を与えることができる.いわゆるintegralはintだけでなく、すべての整数型を指す.以下にルーチン・シーケンスを示す.
    #include 
    using namespace std;
    
    template 
    class testClass {
    public:
    	static const int testInt = 5;
    	static const char testChar = 'A';
    };
    
    int main() {
    	cout<::testInt<::testChar<