类里面的static
#include <iostream>
using namespace std;
class TestClass{
private:
static int data;
int none_static_data;
public:
static void setData(int a_data){
data = a_data;
}
static int getData(){
return data;
}
void SetData(int a_data){
data = a_data;
}
int GetData(){
return data;
}
static void doSomething(){
none_static_data = 1; //error, member not exist
SetData(1); //error, //error, member not exist
}
};
int main(int argc, char *argv[])
{
return 0;
}
C++里面的static修饰的成员,不管是数据还是函数,他都输独立于对象而存在的,对象没有创建的时候它就存在
换一句话会所,static修饰的成员是不属于任何一个对象的,它是属于类的。注意Object和class 的区别。
类里面的非static的成员函数在对象没有创建的时候是不能使用的,static的成员可以通过TestClass::来访问。
因此
- 非static的成员函数能访问static的变量以及函数
- static的成员函数不能访问非static的变量和函数,因为对象还没有创建
static的成员函数类似于delphi中的class function, 在class function中self指针指的不是对象本身,而是类本身,就是TClass(class of TObject)

浙公网安备 33010602011771号