静态成员,指的是在c++类中声明成员时可以加上static关键字,这样声明的成员就叫做静态成员(包括数据成员和成员函数)。即声明为static的类成员或者成员函数便能在类的范围内同享。
静态成员变量
特点
- 所有对象共享同一份数据
- 在编译阶段分配内存
- 类内声明,类外初始化
访问方式
- 通过对象进行访问
- 通过类名进行访问
示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| #include<iostream> using namespace std;
class Person { public: static int m_A; private: static int m_B; };
int Person::m_A = 100; int Person::m_B = 300;
int main() { Person p; Person p2; cout << p.m_A << endl; cout << Person::m_A << endl; p2.m_A = 200; cout << p2.m_A << endl; cout << p.m_A << endl; cout << Person::m_A << endl; cout << p.m_B; cout << Person::m_B; return 0; } }
|
静态成员函数
特点
- 所有对象共享同一个函数
- 静态成员函数只能访问静态成员变量
访问方式
- 通过对象进行访问
- 通过类名进行访问
示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| #include<iostream> using namespace std;
class Person { public: static void func() { m_A = 100; m_B = 200; cout << "static void func的调用" << endl; }
static int m_A; int m_B;
private: static void func2() { cout << "static void func2的调用" << endl; } };
int Person::m_A = 0;
int main() { Person p; p.func(); Person::func(); Person::func2(); return 0; }
|