【まとめ】C++静的メンバー関数およびテスト例
1.静的メンバー関数は、通常の関数ポインタで保存できます.通常のメンバー関数は、クラス関数ポインタで保存する必要があります.
2.静的メンバー関数が非静的メンバー関数を呼び出すことができない理由は2つあり、その1つの静的メンバー関数は非静的メンバー関数の生成より優れており、コンパイル時に静的メンバー関数が生成され、その2つの静的メンバー関数はthisポインタを含まない
3.静的メンバー関数はvirtual、const、volatile関数として同時に宣言できません.
4.静的メンバー関数は、オブジェクトが作成されていない場合でも呼び出すことができます.
不足があれば指摘してほしい.
class A
{
public:
static void fun()
{
cout << "hello world" << endl;
}
public:
void fun2()
{
}
};
int main()
{
void(*p)() = &A::fun;// ,
void (*p1)() = &A::fun2;// ,
void(A::*p2)() = &A::fun2;// ,
void(A::*p3)() = &A::fun;// ,
}
2.静的メンバー関数が非静的メンバー関数を呼び出すことができない理由は2つあり、その1つの静的メンバー関数は非静的メンバー関数の生成より優れており、コンパイル時に静的メンバー関数が生成され、その2つの静的メンバー関数はthisポインタを含まない
class A
{
public:
static void fun()
{
cout << "hello world" << endl;
fun2();// , ;
}
public:
void fun2()
{
fun();// ,
}
};
3.静的メンバー関数はvirtual、const、volatile関数として同時に宣言できません.
class A
{
public:
static void fun()const//
{
cout << "hello world" << endl;
}
static virtual void fun2()//
{
}
volatile static void fun3()//
{
}
public:
void fun2()
{
}
};
4.静的メンバー関数は、オブジェクトが作成されていない場合でも呼び出すことができます.
class A
{
public:
static void fun()
{
cout << "hello world" << endl;
}
public:
void fun2()
{
}
};
int main()
{
A::fun();// ,
return 0;
}
不足があれば指摘してほしい.