用static修饰的成员变量,称为静态成员变量
用static修饰的成员函数,称为静态成员函数
静态成员变量特点
1.静态成员变量在全局/静态区开辟空间,属于类内的全局变量
2.整个类只有一个所以必须在类外初始化,不能使用初始化列表
3.在定义时不添加static关键字,在类中声明时添加
4.静态成员变量可以使用空间域直接访问,例如类名::静态成员
5.是类中的成员,受访问限定符的限制,如public、protected、private
静态成员函数函数特点
1.静态成员函数没有this指针,不能访问任何非静态成员
2.是类中的成员,受访问限定符的限制,如public、protected、private
两个问题
1.静态成员函数可以调用非静态成员函数吗?
答:不可以,静态成员函数没有this指针
2.非静态成员函数可以调用静态成员函数吗?
答:可以
代码
- #include
-
- 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;
- }