1.静态成员变量
静态成员变量 不属于某个对象上,所有对象都共享同一份数据
静态成员变量有两种访问方式
1.通过对象名进行访问
2.通过类名进行访问
#include <iostream>
using namespace std;
//静态成员变量
class Person
{
public:
//1.所有对象都共享一份数据
//2.编译阶段就分配内存
//3.类内声明,类外初始化操作
static int m_A;
//静态成员变量也是有访问权限的
private:
static int m_B;
};
int Person::m_A = 100;
int Person::m_B = 200;
void test01()
{
Person p;
cout << p.m_A << endl;
Person p2;
p.m_A = 200;
cout << p.m_A << endl;
}
void test02()
{
//1.通过对象名进行访问
//Person p;
//cout << p.m_A << endl;
//2.通过类名进行访问
cout << Person::m_A << endl;
//cout << Person::m_B << endl; //私有权限访问不到
}
int main()
{
test01();
}
2.静态成员函数
静态成员函数特点:
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; //非静态成员变量
//静态成员函数也是有访问权限的
private:
static void func2()
{
cout << "static void func2调用" << endl;
}
};
int main()
{
Person p;
p.func();
Person p2;
//p2.func2(); //类外访问不到私有静态成员函数
}