c/c++中static的用法-类的静态成员和静态成员函数

时间:2024-01-23 12:32:54

类的静态成员:
修饰class的数据成员,这种数据成员的生存期大于class的对象;静态数据成员是每个class有一份,普通数据成员是每个实例有一份,因此静态数据成员也叫类变量,普通数据成员也叫实例变量。

类的静态成员函数:
在成员函数前加上static就变成了静态成员函数;静态成员函数不能访问非静态成员函数或数据成员,但非静态可以访问静态。
因为静态是属于类的,无法感知创建的对象,所以它对你对象的函数或者数据是一无所知的,所以它没办法调用;而反过来,创建的对象是对类是可以感知的,所以是可以调用类函数和类成员的。
静态成员函数能够继承和覆盖,但没法是虚函数。

#include <iostream>
using namespace std;

class A
{
public:
	static int a; //类的静态成员变量
	static int get_a();//类的静态成员函数

	int b;
	int get_b();
};
int A::a = 100; //静态成员变量可以在类的外部直接定义
//int A::b = 1000; //普通成员变量在类的外部定义失败

int A::get_a()
{
	return a; //类的静态成员函数只能访问类的静态成员变量
	//return b + a; //静态成员函数无法调用普通成员变量
}
int A::get_b()
{
	return b + a;//普通成员函数可以调用静态成员变量
}

int  main(void)
{
	cout << "a: " << A::get_a() << endl; //不需要类的实例,也可以调用类的静态成员函数

	A m;
	m.b = 90;
	m.a = 100000;

	cout << m.get_a() << endl;
	cout << m.get_b() << endl;
	cout << m.a << endl;

	return 0;

}

运行结果:
在这里插入图片描述