C++データ共有と保護(1)

1866 ワード

C++データ共有と保護
アクティブドメイン
役割ドメインは1つの識別子がプログラム本文の中で有効な領域である:1関数プロトタイプ役割ドメイン2ブロック役割ドメイン(局所役割ドメイン)3種類の役割ドメイン4ネーミング空間役割ドメイン
グローバルネーミングスペースグローバルネーミングスペースはデフォルトのネーミングスペースであり、明示的に宣言されたネーミングスペース以外で宣言された識別子はグローバルネーミングスペースにあります.匿名ネーミングスペース匿名ネーミングスペースは、明示的に宣言する名前のないネーミングスペースです.ネーミングスペース{匿名ネーミングスペース内の様々な宣言(関数宣言、クラス宣言、...)
using namesapce std;//std  C++         ,
//          cin、cout、endl 

対象の生存期間
オブジェクトの生存期間:静的生存期間と動的生存期間
せいてき生存期間
静的生存期間:生存期間はプログラムの実行期間と同じです.
int main (){
static int i=10;//i       ,         ,
///     ,    0
return 0;
}

どうてき生存期間
≪動的生存期間|Dynamic生存期間|emdw≫:プログラムが宣言ポイントに実行されると、識別子に名前を付けた役割ドメインの終了部で終了します.
クラスの静的オブジェクトメンバー
静的メンバーは、同じクラスの異なるオブジェクト間のデータと関数共有の問題を解決します.≪インスタンス・プロパティ|Instance Properties|emdw≫:クラスのすべてのオブジェクトに同じプロパティがありますが、プロパティの値は異なります.この場合、クラスの非静的データ・メンバーで表されます.≪クラス・プロパティ|Class Properties|emdw≫:クラスのすべてのオブジェクトの共通フィーチャーを記述し、任意のオブジェクトについて同じプロパティ値をクラスの静的データ・メンバーで表します.静的メンバーが共通であれば、クラス名でもオブジェクトでもアクセスできます.
class A{
  public: static int i;
  public: static void fun(){}
};
int A::i=10;//         
int main (){
 int j= A::i;
 A::fun();//                ;
 //  
A a;
 int k=a.i;
 a.fun();//       
 
}

説明:(1)静的データ・メンバーは、公有または私有にかかわらず、クラス外で直接初期化できます.(2)静的データ・メンバーによるデータ共有が実現されます.(3)静的データ・メンバーのメモリは、コンパイル時に割り当てられ、プログラムの終了時にオブジェクトに関係なく解放されます.(4)オブジェクトに空間を割り当てる際に静的データ・メンバーが占める空間は含まれません.(5)静的データのメンバーが共有である場合、オブジェクト名でもクラス名でもアクセス可能である、プライベートである場合、共有メンバー関数でのみアクセス可能である.
静的関数メンバー
静的メンバー関数はクラスの静的データと静的関数メンバーに直接アクセスできますが、静的メンバー関数はクラスの非静的データメンバーと非静的関数メンバーに直接アクセスできません.オブジェクトを介してアクセスする必要があります.
class A{
  public:  int i;
  public: static void fun(A a,int m)//             
                       {
                         a.i=m; 
                       }
};

静的関数メンバーの設定は、主に静的データメンバーにアクセスするために使用されます.