在一次代码移动和重组编辑中,发现有一些函数是几个类共用的一些算法实现函数,使用了类的静态成员函数。
添加一个类 Utility, 如下所示:
Class Utility
{
Utility();
~Utility();
static bool InCicle()
{
...
return true;
}
};
在使用该静态成员函数时:
if( Utility::InCircle() ) { ... }
直接使用类名作为限定符来调用静态成员函数即可,不需要声明该类的对象。
也可以声明类的对象,像普通的类的成员函数一样使用,如下所示:
Utility m;
if( m.InCircle() ) { ... }
简单总结了一下类的静态成员函数的一些特点:
1. 在不存在类的对象时,它们仍然存在,而且可以调用;
2. 不能访问调用它的对象, 没有this指针; 故不能使用 const 关键字,静态成员函数不能声明为const, 也无法访问属于类对象的非静态数据成员和非静态成员函数。