用static修饰的成员变量,称为静态成员变量
用static修饰的成员函数,称为静态成员函数
静态成员变量特点
1.静态成员变量在全局/静态区开辟空间,属于类内的全局变量
2.整个类只有一个所以必须在类外初始化,不能使用初始化列表
3.在定义时不添加static关键字,在类中声明时添加
4.静态成员变量可以使用空间域直接访问,例如类名::静态成员
5.是类中的成员,受访问限定符的限制,如public、protected、private
静态成员函数函数特点
1.静态成员函数没有this指针,不能访问任何非静态成员
2.是类中的成员,受访问限定符的限制,如public、protected、private
两个问题
1.静态成员函数可以调用非静态成员函数吗?
答:不可以,静态成员函数没有this指针
2.非静态成员函数可以调用静态成员函数吗?
答:可以
代码
#include<iostream>
using namespace std;
//静态成员
class Date
{
public:
//构造函数
Date(int year, int month, int day)
:_year(year),_month(month),_day(day)
{
;
}
//静态成员变量声明为共有
static int _static1;
static int GetStatic()
{
return _static2;
}
private:
int _year;
int _month;
int _day;
static int _static2;
};
//公有/私有静态成员变量直接在全局定义即可(只能初始化一次)
//注:类内静态成员变量只能在全局初始化一次且不可进行其他操作
int Date::_static1 = 10;
int Date::_static2 = 20;
int main()
{
cout << Date::_static1 << endl;
cout << Date::GetStatic() << endl;
return 0;
}
本文详细介绍了C++中静态成员变量与静态成员函数的概念、特点及应用。静态成员变量在全局区分配内存,属于类的全局变量;静态成员函数没有this指针,无法访问非静态成员。文中通过具体实例展示了如何定义和使用这些特性。

被折叠的 条评论
为什么被折叠?



