C++データ共有と保護(1)
1866 ワード
C++データ共有と保護
アクティブドメイン
役割ドメインは1つの識別子がプログラム本文の中で有効な領域である:1関数プロトタイプ役割ドメイン2ブロック役割ドメイン(局所役割ドメイン)3種類の役割ドメイン4ネーミング空間役割ドメイン
グローバルネーミングスペースグローバルネーミングスペースはデフォルトのネーミングスペースであり、明示的に宣言されたネーミングスペース以外で宣言された識別子はグローバルネーミングスペースにあります.匿名ネーミングスペース匿名ネーミングスペースは、明示的に宣言する名前のないネーミングスペースです.ネーミングスペース{匿名ネーミングスペース内の様々な宣言(関数宣言、クラス宣言、...)
対象の生存期間
オブジェクトの生存期間:静的生存期間と動的生存期間
せいてき生存期間
静的生存期間:生存期間はプログラムの実行期間と同じです.
どうてき生存期間
≪動的生存期間|Dynamic生存期間|emdw≫:プログラムが宣言ポイントに実行されると、識別子に名前を付けた役割ドメインの終了部で終了します.
クラスの静的オブジェクトメンバー
静的メンバーは、同じクラスの異なるオブジェクト間のデータと関数共有の問題を解決します.≪インスタンス・プロパティ|Instance Properties|emdw≫:クラスのすべてのオブジェクトに同じプロパティがありますが、プロパティの値は異なります.この場合、クラスの非静的データ・メンバーで表されます.≪クラス・プロパティ|Class Properties|emdw≫:クラスのすべてのオブジェクトの共通フィーチャーを記述し、任意のオブジェクトについて同じプロパティ値をクラスの静的データ・メンバーで表します.静的メンバーが共通であれば、クラス名でもオブジェクトでもアクセスできます.
説明:(1)静的データ・メンバーは、公有または私有にかかわらず、クラス外で直接初期化できます.(2)静的データ・メンバーによるデータ共有が実現されます.(3)静的データ・メンバーのメモリは、コンパイル時に割り当てられ、プログラムの終了時にオブジェクトに関係なく解放されます.(4)オブジェクトに空間を割り当てる際に静的データ・メンバーが占める空間は含まれません.(5)静的データのメンバーが共有である場合、オブジェクト名でもクラス名でもアクセス可能である、プライベートである場合、共有メンバー関数でのみアクセス可能である.
静的関数メンバー
静的メンバー関数はクラスの静的データと静的関数メンバーに直接アクセスできますが、静的メンバー関数はクラスの非静的データメンバーと非静的関数メンバーに直接アクセスできません.オブジェクトを介してアクセスする必要があります.
静的関数メンバーの設定は、主に静的データメンバーにアクセスするために使用されます.
アクティブドメイン
役割ドメインは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;
}
};
静的関数メンバーの設定は、主に静的データメンバーにアクセスするために使用されます.