C++クラスの常メンバー関数および静的メンバー関数

1630 ワード

1常メンバー関数
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;
}