静态成员变量
在C++中可以定义静态成员变量
静态成员变量属于整个类所有
可以通过类名直接访问公有静态成员变量
所有对象共享类的静态成员变量
可以通过对象名访问公有静态成员变量
静态成员变量的特性
在定义时直接通过static关键字修饰
静态成员变量需要在类外单独分配空间
- 语法规则:Type ClassName::VarName = value;
静态成员变量在程序内部位于全局数据区
静态成员函数
在C++中可以定义静态成员函数
静态成员函数是类中特殊的成员函数
定义:直接通过static关键字修饰成员函数
静态成员函数属于整个类所有
可以通过类名直接访问公有静态成员函数
可以通过对象名访问公有静态成员函数
- 静态成员函数只能直接访问静态成员变量(函数)
静态成员函数VS普通成员函数
- | 静态成员函数 | 普通成员函数 |
---|---|---|
所有对象共享 | Yes | No |
隐含this指针 | No | Yes |
访问普通成员变量(函数) | No | Yes |
访问静态成员变量(函数) | Yes | Yes |
通过类名直接调用 | Yes | No |
通过对象名直接调用 | Yes | Yes |
/*
测试代码
计算类的对象数目
*/
#include<iostream>
using namespace std;
class Test
{
private:
static int count;
public:
Test()
{
count++;
}
~Test()
{
count--;
}
static int get()
{
return count;
}
};
int Test::count = 0;
int main()
{
Test t1;
Test t2;
cout << "count = " << Test::get() << endl;
Test* p = new Test();
cout << "count = " << Test::get() << endl;
delete p;
cout << "count = " << Test::get() << endl;
return 0;
}
运行结果
count = 2
count = 3
count = 2