您的位置:首页 > 编程语言 > C语言/C++

【总结】C++静态成员函数及测试用例

2016-03-10 23:10 351 查看
1.静态成员函数可以用普通函数指针储存,普通成员函数必须用类函数指针储存
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.静态成员函数不可以调用非静态成员函数原因有二,其一静态成员函数优于非静态成员函数生成,在编译的时候静态成员函数已经生成,其二静态成员函数不含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;
}
如有不足,希望指正。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++ 函数 静态成员