静态成员变量:
1、要单独的把实现写在类外(cpp)
2、默认会用0对该成员进行初始化
3、静态成员变量是同一个类的不同对象共用的
4、本质上是一个带类域的全局变量(CInterger::m_static = 1;)
#include <iostream> #include <string> using namespace std; class CInterger { public: CInterger(int nNumber) : m_nNumber(2) { m_nNumber = nNumber; } void SetNumber(int nNumber) { m_nNumber = nNumber; }; static int m_nStatic; private: int m_nNumber; }; int CInterger::m_nStatic; //在类外(cpp)单独声明是哪一个类的静态成员 int main(int argc, char const *argv[]) { CInterger i(1); i.m_nStatic = 2; return 0; }
静态成员函数:
1、在头文件的函数名前面加上关键字static
2、函数内部不能访问普通成员变量,只能访问静态成员变量
3、本质:静态成员函数中没有this指针,因此不能通过this指针访问到对象的普通成员变量
4、静态成员函数实际上就是带类域的全局函数
5、静态函数可以作为线程回调函数的声明