静的メンバーと非静的メンバーの違い
5979 ワード
1.データメンバーは、静的変数、非静的変数の2種類に分けることができる.静的メンバー:静的クラスのメンバーにstatic修飾子、すなわち静的メンバーが加わる.この静的メンバーは、クラス名+静的メンバー名を使用して直接アクセスできます.静的メンバーはメモリに存在し、非静的メンバーはメモリを割り当てるためにインスタンス化する必要があるため、静的メンバーは非静的メンバーにアクセスできません.静的メンバーはメモリに存在するため、非静的メンバーはクラス内の静的メンバーに直接アクセスすることができる.静的メンバーは、同じクラスの異なるオブジェクト間のデータと関数の共有の問題を解決するために、各クラスに1つのコピーしかありません.非静的メンバー:Staticを追加していないすべてのメンバーは非静的メンバーで、クラスがインスタンス化された後、インスタンス化されたクラス名でアクセスできます.非静的メンバーの生存期間は、クラスの生存期間によって決定される.静的メンバーは常にコンテンツに存在するため、生存期間の概念は存在しません.
クラスには静的メンバーと非静的メンバーを含めることもできます.クラスには静的構造関数と非静的構造関数も含まれます.
2.
クラスには静的メンバーと非静的メンバーを含めることもできます.クラスには静的構造関数と非静的構造関数も含まれます.
2.
, , 。 , ,
1:
class A
{
public:
static void f(A a);
private:
int x;
};
void A::f(A a)
{
cout<<x<<endl;// x
cout<<a.x<<endl;//
}
2:
#include<iostream>
using namespace std;
class Myclass
{
private:
int m; //
static int n; //
public:
Myclass(); //
static int getn(Myclass a); //
};
Myclass::Myclass()
{
m = 10;
}
int Myclass::getn(Myclass a)
{
cout << a.m << endl; //
return n; //
}
int Myclass::n = 100; //
void main()
{
Myclass app1;
cout << app1.getn(app1) << endl; //
cout << Myclass::getn(app1) << endl; //
}
3. , :
1. . ( . ). ( . )
2. . . , .
. .
, .
3. , , , 。