Static
Static的一个函数里的量,就相当于是全局变量,只不过只有在这个函数里才能使用这个量
Static 的是函数里的一个类的话,这个类在第一次进这个函数的时候被初始化。这个对象的存储是全局化的。这个变量只有在程序结束的时候才发生析构(全局变量的初始化如果在不同CPP里是不知道谁先编译的,所以如果一个变量的值依赖另一个值,那么就会有问题,解决办法是所有全局变量尽量写在一个文件.cpp中)。计算机的一切都是人想出来的,那么怎样只让这个变量只做一次初始化呢?
void f()
{
static X my_X(10,20);
}
C++中是否有个隐含的成员,用来表示是否这个对象被初始化了。
Hidden:对类来说用private
Persistent:函数之间存在的东西,全局变量。
对于一个对象,对象之间存在的东西。不随着对象的不同而不同。
Static member静态的成员变量
在所有对象中都保持一致。
Eg:
这样的话error,因为i只是声明不是定义。
要加一句int A::i;定义
如果一个类有static变量,那么你一定要.cpp去定义它,如下int A::i,注意这int前不要写static,因为这个成员是可以在别的地方被访问的,不是只在这个.cpp中,所以int前不要加static。可以在int A::i=1;只能在定义的时候赋值。不能在构造函数列表里赋值。
---------------------------------------------】
静态的成员函数
Class A
{
Public:
A(){}
Static void say(int ii)
{
Cout<<ii<<k<<endl;//错误,在静态的成员函数中不能访问非静态的成员变量
//静态的成员函数
Cout<<ii<<this_>i<<endl;//错,静态的函数是调用是A::say没有对象,所以不能用this,所以所有非静态的成员变量都不能访问
}
Private:
Int k;
Static int I;
}