静态成员
- 静态成员就是在成员变量或者是成员函数前面加上static关键字。
- 数据共享,节省内存,隐藏性和安全性(权限还都起作用)。
静态成员变量
- 所有对象共享同一份数据,主打一个静,在编译阶段分配内存,不管哪个对象来,我自静静的守着这块内存。
- 类内声明,类外初始化,相当于全局定义,初始化不需要加static(初始化:类型 类名::成员名= 18)。
- 可以通过对象或者类名进行访问,谁访问都是同一块内存。
- 静态成员变量也具有访问权限。
code:
#include<iostream>
using namespace std;
class Person
{
public:
static int age;
private:
static int height;
};
int Person::age = 18;
int Person::height = 180;
void main()
{
Person p1;
cout << p1.age << endl;
Person p2;
p2.age = 25;
cout << p1.age << endl;
cout << Person::age << endl;
system("pause");
}
result:
18
25
25
静态成员函数
- 所有对象共享同一个函数。
- 可以通过对象或者类名进行访问。
- 静态成员函数只能访问静态的成员变量,普通成员变量无法访问(因为普通),而普通成员函数可以访问静态的,也可以访问普通的。
- 静态成员函数也是有访问权限的,类外访问不到私有的静态成员函数。
code:
#include<iostream>
using namespace std;
class Person
{
public:
static int age;
int name;
static void show_info()
{
cout << "static void show_info()被调用" << endl;
cout << "静态成员函数中访问静态成员变量age=" << age << endl;
}
};
int Person::age = 18;
void main()
{
Person p1;
cout << p1.age << endl;
p1.show_info();
cout << endl;
Person p2;
p2.age = 25;
cout << p1.age << endl;
p2.show_info();
cout << endl;
Person::show_info();
system("pause");
}
result:
18
static void show_info()被调用
18
25
static void show_info()被调用
25
static void show_info()被调用
25