本篇参考:C++类中的静态成员函数以及静态成员变量_c++静态成员变量_森明帮大于黑虎帮的博客-CSDN博客
一 、静态成员
1、静态成员包括:静态成员函数和静态成员变量。指在类内用static关键字声明的变量和函数。
2、静态成员在编译阶段划分储存空间,不占用具体对象空间,在程序结束时销毁释放内存。
3、静态成员是整个类共有,通过类名和对象名均能访问,不计入类所占空间。
4、静态成员变量必须类内声明,类外定义。
5、静态成员函数只能访问静态成员函数和静态成员变量。
6、静态成员变量不属于某个对象,实例化时候不计入对象所占空间。
7、静态成员可由类名或对象名引用。
#include<iostream>
using namespace std;
class MyClass {
public:
MyClass() {
a = 0;
b = 10;
}
int a;
static int b;
static void func() {
//cout << "a=" << a << endl; //报错
cout << "b=" << b << endl;
}
};
int MyClass::b = 0;
void test01() {
MyClass mclass;
mclass.func();
MyClass::func();
}
int main(int argc, char const **argv) {
test01();
system("pause");
return 0;
}
二、静态成员函数
C++会区分两种类型的成员函数:
静态成员函数和非静态成员函数。这两者之间的一个重大区别是,静态成员函数不接受隐含的 this
自变量。所以,它就无法访问自己类的非静态成员。
静态成员函数: 在类定义中,前面有static说明的成员函数称为静态成员函数。静态成员函数使用方式和静态变量一样,同样在对象没有创建前,即可通过类名调用。静态成员函数主要为了访问静态变量,但是,不能访问普通成员变量。 静态成员函数的意义,不在于信息共享,数据沟通,而在于管理静态数据成员,完成对静态数据成员的封装。
-
静态成员函数只能访问静态成员变量,不能访问普通成员变量。
-
普通成员函数可访问静态成员变量、也可以访问非静态成员变量。
-
静态成员函数也有访问权限。
-
静态成员函数可由类名或对象名调用。
-
静态成员函数可类内定义,也可类外定义。