Definition

static data member用来表示唯一的、可共享的member。他可以再同一类的所有对象中被访问
对于class而言,static data member只有唯一一份实体;有点类似于全局对象

  1. class Triangular{
  2. public:
  3. static bool is_elem(int );
  4. //……
  5. private:
  6. static vector<int> _elems;
  7. }
  8. bool Triangular::is_elem(int value){
  9. //……
  10. }

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相关的情况下可以声明,其调用不需要对象;