C++クラス内の各種メンバー変数の初期化

1636 ワード

constメンバー変数は直接初期化(C++11)するか、初期化リストで初期化するか、staticメンバー変数はクラス外で初期化し、static const変数は直接初期化し、リストで初期化することはできません.
class A
{
public:
    A():a{0},b{0},c{1}{}
    int a;
    mutable int b;
    const int c;
    static int d;
    static const int e=6;
    void f()const
    {
        //a++;
        cout<<a<<endl;
        b++;
        cout<<b<<endl;
    }

};

int A::d=3;

int main()
{
    A ta;
    A* fa=&ta;
    const_cast<A*>(fa)->a=3;
    fa->f();

    A ffa;
    const_cast<A&>(ffa).a=5;
    ffa.f();

    return 0;
}

const_castの本質はポインタを除去する定数性である