静态成员:在定义前面加了static关键词的成员。函数
class A { public: A(int a, int b):m_a(a),m_b(b) { num += m_a + m_b; } ~A(){ } void Fun(); // 普通成员函数 static void PrintNum() // 静态成员函数 { // 在静态成员函数中,不能访问非静态成员变量,也不能调用非静态成员函数 std::cout << num << std::endl; } private: int m_a; // 普通成员变量 int m_b; // 普通成员变量 static int num; // 静态成员变量 }; // 静态成员必须在定义类的文件中对静态成员变量进行初始化,不然会编译出错。 int A::num = 0; int main() { A a1(1,1); A::PrintNum(); // 访问静态函数 A a2(1,1); A::PrintNum(); // 访问静态函数 return 0; }
输出结果指针
2 4
这里须要注意的是sizeof
运算符不会计算静态成员变量的大小,以下栗子:code
class CTest { int n; static int s; };
则sizeof(CTest)
等于4对象
A::PrintNum();
A a; a.PrintNum();
A *p = new A(); p->PrintNum();
A a; A & ref = a; ref.PrintNum();