1、概念
声明为static的类成员称为类的静态成员,用static修饰的成员变量称为静态成员变量,用static修饰的函数称为静态成员函数。
2、特性
(1)静态成员为所有类对象所共享,不属于某个具体的实例;
(2)静态成员变量要在类外定义,定义时不加static关键字;
(3)访问静态成员的方式:类名::静态成员;
(4)静态成员函数没有隐藏的this指针,不能访问任何非静态成员;
(5)静态成员和类的普通成员一样,有public、protected、private访问级别,有返回值,可被const修饰。
(6)不能将静态成员函数定义为虚函数。
【例】
#include<stdlib.h>
#include<iostream>
using namespace std;
class A
{
private:
static int _count;//静态变量
public:
A()
{
++_count;
}
A(const A& a)
{
++_count;
}
static int GetACount()//静态函数
{
return _count;//在静态函数中使用静态变量
}
~A()
{
--_count;
}
};
int A::_count = 0;
void Test()
{
cout << "未调用对象时:"<< A::GetACount() << endl;
A a1, a2;
A a3(a1);
cout << "调用对象的个数是:" << A::GetACount() << endl;
}
int main()
{
Test();
system("pause");
return 0;
}
运行结果为:
注意:
(1)静态成员函数能调用静态成员,但是不能调用非静态成员;
(2)非静态成员函数能调用静态成员,也可以调用非静态成员。