何为静态成员
静态成员就是在成员变量和成员函数前加上关键字static,称为静态成员。
静态成员变量
1.所有对象共享同一份数据;
2.在编译阶段分配内存(在点开exe文件之前);
3.类内声明,类外初始化。
实操代码
#include <bits/stdc++.h>
using namespace std;
class Person {
public:
//所有对象都共享同一份数据!!!!
//编译阶段就分配了内存
//类内进行声明,类外初始化;
static int m_A;
//静态成员变量也是有访问权限的
private:
static int m_B;
};
int Person::m_A = 18;
int Person::m_B = 20;
//注意类外声明的格式,static关键字不要,然后要声明是Person的成员变量
void test1() {
Person p;
cout << p.m_A << endl;
Person p2;
p2.m_A = 100;
cout << p.m_A << endl;
}
void test2() {
//静态成员变量 不属于某个对像上 所有对象都共享一份数据
//1.通过对象进行访问
Person p1;
cout << p1.m_A << endl;
//2.通过类名进行访问
cout << Person::m_A << endl;
//cout << Person::m_B << endl;
//私有作用域出了类是访问不到的
}
int main() {
//test1();
test2();
}
静态成员函数
1.所有对象共享同一个函数;
2、静态成员函数只能访问静态变量。
代码实操
#include <bits/stdc++.h>
using namespace std;
//静态成员函数
/*
1.所有对象共享同一个函数
2.静态成员函数只能访问静态成员变量
*/
class Person {
public:
static int m_A;
static void func() {
cout << "static void func 调用" << endl;
m_A = 100;
cout << m_A << endl;
}
};
int Person::m_A = 18;
void test1() {
//1.通过对象访问
Person p;
p.func();
//2.通过类名进行访问
Person::func();
}
int main() {
test1();
}