静态成员变量
静态成员变量:1.所有对象共享一份数据。2.在编译阶段分配内存(代码还未开始前,程序还未运行前,在全局区优先分配好内存)。3.类内声明,类外初始化。
代码如下:
#include<iostream>
using namespace std;
class Person {
public:
static int m_A;//类内声明
};
int Person::m_A = 100;//类外初始化
void test01() {
//静态成员的两种访问方式
// 静态成员变量不属于某个对象上,所有对象都共享一份数据。因此静态成员变量有两种访问方式。
//1.通过对象访问
Person p1;
cout << p1.m_A << endl;
Person p2;
p2.m_A = 200;
cout << p2.m_A << endl;
//2.通过类名访问
}
int main() {
test01();
system("pause");
return 0;
}
静态成员函数
静态成员函数:1.所有对象共享一个函数。2.静态成员函数只能访问静态成员变量。
代码如下:
#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;
};
void test01() {
//两种访问静态成员函数的方式
//1.对象访问
Person p;
p.func();
//2.类访问
Person::func();
}
int main() {
system("pause");
return 0;
}
注意:静态成员函数也是有访问权限的,类外访问不到私有静态成员函数。
静态static成员函数它只属于类本身不属于每一个实例对象独立存在。非静态成员,仅当实例化对象之后存在。静态成员函数访问在前,非静态成员函数访问在后,静态函数无法访问一个不存在的东西。