先来看一个简单的程序:
[cpp]view plaincopy
#include<iostream>
usingnamespacestd;
classA
{
public:
intx;
voidprint()
{
cout<<this<<endl;
}
};
intmain()
{
Aa;
cout<<&a<<endl;//0013FF7C
a.print();//0013FF7C
Aaa;
cout<<&aa<<endl;//0013FF78
aa.print();//0013FF78
return0;
}
再看看看:
[cpp]view plaincopy
#include<iostream>
usingnamespacestd;
classA
{
public:
intx;
voidstaticprint()
{
cout<<this<<endl;//static成员函数没有this指针
}
};
intmain()
{
Aa;
cout<<&a<<endl;
return0;
}
static函数没有this指针, 故不能访问类的非静态成员变量, 不能调用非静态的成员函数。且看:
[cpp]view plaincopy
#include<iostream>
usingnamespacestd;
classA
{
public:
intx;
voidstaticprint()
{
cout<<x<<endl;//没有this,所以不知道x是啥
}
};
intmain()
{
return0;
}
[cpp]view plaincopy
#include<iostream>
usingnamespacestd;
classA
{
public:
intx;
voidtest()
{
}
voidstaticprint()
{
test();//没有this,所以不知道test是啥
}
};
intmain()
{
return0;
}