Definition
static data member用来表示唯一的、可共享的member。他可以再同一类的所有对象中被访问
对于class而言,static data member只有唯一一份实体;有点类似于全局对象
class Triangular{
public:
static bool is_elem(int );
//……
private:
static vector<int> _elems;
}
bool Triangular::is_elem(int value){
//……
}
Static member function
static member fuction指的是某个成员函数其本身与任何的non static data member都无关,仅与static data member 有关,那么他的调用也和一般的non static member function不同
- 一般情况下member function 如果想要被访问,需要通过某个对象来调用,该对象会被绑定到这个function的this指针。通过this指针,才可以访问到内部的变量
为了避免混淆,一般加上限定符if(Triangular::is_elem(8))
- static member function只有再与任何non static data member都无瓜葛的情况下才能被声明
- 声明为static后,再class外定义是不需要重复加上关键词static
小结
- static data member 有点类似于全局变量,不过作用域是在整个类
- static member function只有function只与static data member相关的情况下可以声明,其调用不需要对象;