C++——类——静态成员

本篇参考:C++类中的静态成员函数以及静态成员变量_c++静态成员变量_森明帮大于黑虎帮的博客-CSDN博客

一 、静态成员

1、静态成员包括:静态成员函数和静态成员变量。指在类内用static关键字声明的变量和函数。

2、静态成员在编译阶段划分储存空间,不占用具体对象空间,在程序结束时销毁释放内存。

3、静态成员是整个类共有,通过类名和对象名均能访问,不计入类所占空间。

4、静态成员变量必须类内声明,类外定义。

5、静态成员函数只能访问静态成员函数和静态成员变量。

6、静态成员变量不属于某个对象,实例化时候不计入对象所占空间。

7、静态成员可由类名或对象名引用。

#include
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说明的成员函数称为静态成员函数。静态成员函数使用方式和静态变量一样,同样在对象没有创建前,即可通过类名调用。静态成员函数主要为了访问静态变量,但是,不能访问普通成员变量。 静态成员函数的意义,不在于信息共享,数据沟通,而在于管理静态数据成员,完成对静态数据成员的封装。

  1. 静态成员函数只能访问静态成员变量,不能访问普通成员变量。

  2. 普通成员函数可访问静态成员变量、也可以访问非静态成员变量。

  3. 静态成员函数也有访问权限。

  4. 静态成员函数可由类名或对象名调用。

  5. 静态成员函数可类内定义,也可类外定义。

你可能感兴趣的:(c++,开发语言)