成员函数的静态变量与类的静态变量
相同点: 都是属于类本身,而不是类的对象。
不同点: 类的静态变量需要初始化,可以设置访问权限,供外部调用,而成员函数的静态变量的初始化是在第一次调用函数时发生,外部也不能访问。
测试代码
#include <iostream>
using namespace std;
class A
{
public:
void test(int n)
{
static int i = n;
cout<<"i = "<<i++<<endl;
}
};
void main()
{
A* p1 = new A;
p1->test(3);
delete p1;
A* p2 = new A;
p2->test(30);
delete p2;
}
结果是
i = 3
i = 4
而不是
i = 3
i = 30