1.定义
1.静态成员就是在成员变量和成员函数前加上关键字static,称为静态成员。
2.静态成员分为:
1.静态成员变量
1.所有对象共享同一份数据
2.在编译阶段分配内存。
3.类内声明,类外初始化。
2.静态成员函数
1.所有对象共享同一个函数。
2.静态成员函数只能访问静态成员变量
1.什么是类内声明,类外初始化操作?(代码演示)
#include<iostream>
using namespace std;
//静态成员变量
class Person {
public:
//3.类内声明,类外初始化操作
static int m_A;
};
void test01() {
Person p;
cout << p.m_A << endl;
}
int main() {
test01();
system("pause");
return 0;
}
上面这个代码就是没有申明,会发生报错,如下图所示:
改正过后的代码:
#include<iostream>
using namespace std;
//静态成员变量
class Person {
public:
//3.类内声明,类外初始化操作
static int m_A;
};
int Person::m_A = 100;
void test01() {
Person p;
cout << p.m_A << endl;
}
int main() {
test01();
system("pause");
return 0;
}
进行了初始化,就不会报错了。
2.静态成员变量特性案例1:
验证:
1.所有对象都共享一份数据
2.编译阶段分配内存
3.类内声明,类外初始化操作
#include<iostream>
using namespace std;
//静态成员变量
class Person {
public:
//1.所有对象都共享一份数据
//2.编译阶段分配内存
//3.类内声明,类外初始化操作
static int m_A;
};
int Person::m_A = 100;
void test01() {
Person p;
//100
cout << p.m_A << endl;
Person p2;
p2.m_A = 200;
//200
cout << p.m_A << endl;
}
int main() {
test01();
system("pause");
return 0;
}
3.静态成员变量特性案例2:
验证:静态成员变量有两种方式
1.通过对象进行访问
2.通过类名进行访问
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 test02() {
//静态成员变量,不属于某个对象上,所有对象都共享
//因此静态成员变量有两种方式
//1.通过对象进行访问
Person p;
cout << p.m_A << endl;
//2.通过类名进行访问
cout << Person::m_A << endl;
//3.权限测试
//cout << Person::m_B << endl;//发生报错,私有权限类外无法访问
}
int main() {
test02();
system("pause");
return 0;
}