类里面static修饰的成员,成为静态类成员。
类的静态成员是该类型的所有对象共有。
static的作用及用法
(1)函数体内static变量的作用范围为该函数体,不同于auto变量,该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值;(2)在模块内的static全局变量可以被模块内所用函数访问,但不能被模块外其它函数访问;(3)在模块内的static函数只可被这一模块内的其它函数调用,这个函数的使用范围被限制在声明它的模块内;(4)在类中的static成员变量属于整个类所拥有,对类的所有对象只有一份拷贝;(5)在类中的static成员函数属于整个类所拥有,这个函数不接收this指针,因而只能访问类的static成员变量。
类里面的静态成员函数相当于类里面的全局函数,它能访问类里面的私有构造函数、析构函数、普通函数以及成员变量,静态成员只能通过静态成员函数进行访问。
include<iostream>
using namespace std;
class Date
{
public:
Date()
{
cout << "Date ()" << endl;
++sCount;
}
void Display()
{
cout << "year:" << _year << endl;
cout << "month:" << _month << endl;
cout << "day:" << _day << endl;
}
// 静态成员函数
static void PrintCount()
{
cout << "Date count:" << sCount << endl;
}
private:
int _year; // 年
int _month; // 月
int _day; // 日
private:
static int sCount; // 静态成员变量,统计创建时间个数
};
// 定义并初始化静态成员变量
int Date::sCount = 0;
void Test()
{
Date d1, d2;
// 访问静态成员
Date::PrintCount();
}
int main()
{
Test();
return 0;
}
输出2;