C++クラスの常メンバー関数および静的メンバー関数
1630 ワード
1常メンバー関数
1.1宣言:関数名(パラメータリスト)const;
1.2説明:
1)constは関数タイプの一部であり、実装部分にもこのキーワードを付ける.
2)constキーワードは、リロード関数の区別に使用することができる.
3)常メンバー関数はクラスのメンバー変数を更新することができず、クラスにconstで修飾されていないメンバー関数を呼び出すこともできず、常メンバー関数のみを呼び出すことができるが、他のメンバー関数で呼び出すことができる.
4)特に、通常のオブジェクトはクラス内のconstメンバー関数(システムが自動的に呼び出す隠し構造関数および構造関数を除く)にのみアクセスできます.
1.3ルーチン:
2静的メンバー関数
static修飾メンバー関数を使用すると、一度だけ定義でき、クラスのすべてのオブジェクトに共有されます.オブジェクトに関係なく、クラスの動作です.次のような特徴があります.
1)静的関数メンバーはクラス内の非静的データメンバーおよび非静的メンバー関数に直接アクセスできず、オブジェクト名(パラメータによって入力される)のみでアクセスできます.
2)静的メンバー関数がクラス外で実装される場合、static修飾を加える必要はありません.そうしないとエラーが発生します.
3)クラス外では,オブジェクト名およびクラス名でクラスの静的メンバー関数を呼び出すことができる.
1.1宣言:関数名(パラメータリスト)const;
1.2説明:
1)constは関数タイプの一部であり、実装部分にもこのキーワードを付ける.
2)constキーワードは、リロード関数の区別に使用することができる.
3)常メンバー関数はクラスのメンバー変数を更新することができず、クラスにconstで修飾されていないメンバー関数を呼び出すこともできず、常メンバー関数のみを呼び出すことができるが、他のメンバー関数で呼び出すことができる.
4)特に、通常のオブジェクトはクラス内のconstメンバー関数(システムが自動的に呼び出す隠し構造関数および構造関数を除く)にのみアクセスできます.
1.3ルーチン:
class A{
private:
int w, h;
public:
int getValue()const;
int getValue();
A(int x, int y):w(x), h(y){}
A(){}
~A(){}
};
int A::getValue()const{
return w*h;
}
int A::getValue(){
return w+h;
}
int main()
{
const A a(1, 2);
A c(1,2);
cout << a.getValue() << endl; // const
cout << c.getValue() << endl; // const
return 0;
}
2静的メンバー関数
static修飾メンバー関数を使用すると、一度だけ定義でき、クラスのすべてのオブジェクトに共有されます.オブジェクトに関係なく、クラスの動作です.次のような特徴があります.
1)静的関数メンバーはクラス内の非静的データメンバーおよび非静的メンバー関数に直接アクセスできず、オブジェクト名(パラメータによって入力される)のみでアクセスできます.
2)静的メンバー関数がクラス外で実装される場合、static修飾を加える必要はありません.そうしないとエラーが発生します.
3)クラス外では,オブジェクト名およびクラス名でクラスの静的メンバー関数を呼び出すことができる.
class B{
private:
int x;
int y;
static int count;
public:
B():x(0), y(0){
count++;
}
B(int xx, int yy):x(xx), y(yy){
count++;
}
static int getObjCount();
};
int B::count = 0;
int B::getObjCount(){
return count;
}
int main()
{
cout << B::getObjCount() << endl;
B b1;
B b2(10, 20);
cout << b1.getObjCount() << endl;
cout << b2.getObjCount() << endl;
cout << B::getObjCount() << endl;
return 0;
}