1.1 静态成员变量
1.1.1 编译阶段分配内存
1.1.2 所有对象共享数据
1.1.3 通过对象访问、通过类名访问
1.1.4 有权限控制
1.1.5 类内声明 类外初始化
1.2 静态成员函数
1.2.1 可以访问静态成员变量,不可以访问普通成员变量
1.2.2 普通成员函数 都可以访问
1.2.3 静态成员函数也有权限
1.2.4 可以通过对象访问,也可以通过类名进行访问
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<string>
using namespace std;
class Person {
public:
Person() {
//m_age = 10; //加入static就是 静态成员变量 ,会共享数据
}
//静态成员变量,在类内声明,类外进行初始化
static int m_age;
//静态成员函数
//不可以访问 普通成员变量
int m_A;
//可以访问 静态成员变量
static void func() {
//m_A = 23; //C2597 illegal reference to non-static member 'Person::m_A'
m_age = 63;
m_other = 83;
cout << "public::static void func()" << endl;
}
//普通成员函数 可以访问普通成员变量,也可以访问静态成员变量
void myFunc()
{
m_A = 100;
m_age = 100;
}
private:
//静态成员变量 也是有权限的
static int m_other;//私有权限 在类外不能访问
static void func2() {
cout << "private::static void func()" << endl;
}
};
int Person::m_age = 26;//类外初始化实现
int Person::m_other = 10;
void test01(){
//1 通过对象访问属性
Person p1;
p1.m_age = 56;
Person p2;
p2.m_age = 97;
cout << "p1 = " << p1.m_age << endl; //56 或者 97? 97
cout << "p2 = " << p2.m_age << endl; //97
//共享数据
//2 通过类名访问属性
cout << "通过类名访问age:" << Person::m_age << endl;
//cout << "other = " << Person::m_other << endl; //私有权限在类外无法访问
//静态成员函数调用
p1.func();
p2.func();
Person::func();
//静态成员函数 也是有权限的
//Person::func2();
}
int main(){
test01();
system("pause");
return 0;
}