C++静态成员

前言

静态成员就是在成员变量和成员函数前加上关键字static,称为静态成员

静态成员分为:

  • 静态成员变量
    • 所有对象共享同一份数据
    • 在编译阶段分配内存
    • 类内声明,类外初始化
  • 静态成员函数
    • 所有对象共享同一个函数
    • 静态成员函数只能访问静态成员变量

1.静态成员变量

1.1静态成员的声明

C++静态成员
静态成员变量相比于普通成员变量而言,就形式上,类型说明符前面加上一个 static。但是,声明一个静态成员变量,这还不够,还要在类的外面进行初始化。
C++静态成员

1.2静态成员变量的特点

  • 1 在编译阶段分配内存
  • 2 类内声明,类外初始化
  • 3 所有对象共享同一份数据
  • 静态成员变量的生命期不依赖于任何对象,为程序的生命周期
  • 静态成员变量需要在类外单独分配空间

静态成员变量有一个非常重要的特点,就是所有对象共享同一片内存。

小结 :静态成员变量存储在静态区(全局区),是在编译阶段就已经存在的,它的存储位置和类的存储位置不一样。

1.3静态成员变量访问方式

由于静态成员变量是所有对象共享的,说明它不单独属于某一个对象,正因如此,静态成员变量的访问方式有两种

1.3.1 通过类名进行访问

C++静态成员

1.3.2 通过对象进行访问

C++静态成员

提醒:普通成员变量是不可以通过类进行访问的,自己想想为什么

1.4静态成员变量具有访问权限

C++静态成员

如上图所示:
m_A 这个静态成员变量是可以通过类名或是对象进行访问,但m_B静态成员变量只能通过类内进行访问。

2.静态成员函数

2.1静态成员函数的定义

静态成员函数相比于普通成员函数,形式上,就是在类型说明符前加上static
C++静态成员

2.2静态成员函数的特点

  • 程序共享同一个函数
  • 静态成员函数只能访问静态成员变量
  • 静态成员函数不属于某一个对象

2.3静态成员函数的调用方式

2.3.1 通过类名进行调用

C++静态成员

2.3.2 通过对象进行调用

C++静态成员

2.4静态成员函数具有访问权限

C++静态成员
如果一个静态成员函数不是在public访问权限下,是不可以通过类名或是对象对其进行调用。