静的メンバーと非静的メンバーの違い

5979 ワード

1.データメンバーは、静的変数、非静的変数の2種類に分けることができる.静的メンバー:静的クラスのメンバーにstatic修飾子、すなわち静的メンバーが加わる.この静的メンバーは、クラス名+静的メンバー名を使用して直接アクセスできます.静的メンバーはメモリに存在し、非静的メンバーはメモリを割り当てるためにインスタンス化する必要があるため、静的メンバーは非静的メンバーにアクセスできません.静的メンバーはメモリに存在するため、非静的メンバーはクラス内の静的メンバーに直接アクセスすることができる.静的メンバーは、同じクラスの異なるオブジェクト間のデータと関数の共有の問題を解決するために、各クラスに1つのコピーしかありません.非静的メンバー:Staticを追加していないすべてのメンバーは非静的メンバーで、クラスがインスタンス化された後、インスタンス化されたクラス名でアクセスできます.非静的メンバーの生存期間は、クラスの生存期間によって決定される.静的メンバーは常にコンテンツに存在するため、生存期間の概念は存在しません. 
クラスには静的メンバーと非静的メンバーを含めることもできます.クラスには静的構造関数と非静的構造関数も含まれます.
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. , , , 。