#include <iostream>
using namespace std;
class Myclass{
public:
int datas;
static int staticValue; //静态成员变量在类外进行初始化
void printInfo(){
cout<<datas<<endl;
}
static int getStaticDatas()//静态成员函数不能直接访问非静态变量和非静态函数,
{ //因为静态函数在编译阶段就已经存在,非静态函数和变量在运行阶段存在,先存在的不能访问后存在的
return staticValue;
}
};
class Test{
public:
void printInfo();
};
void Test::printInfo()
{
//静态变量也可以通过其他类进行访问,类似于全局
Myclass::staticValue++;
cout << Myclass::staticValue<< endl;
//静态函数也可以通过其他类进行访问
cout << Myclass::getStaticDatas()<< endl;
}
//静态成员变量在类外进行初始化
int Myclass::staticValue = 0;
int main()
{
//静态变量可以不用通过对象进行访问,可以通过类名直接访问;
cout << Myclass::staticValue<< endl;
//静态函数可以不用通过对象进行访问,可以通过类名直接访问;
cout << Myclass::getStaticDatas()<< endl;
Test t1;
t1.printInfo();
return 0;
}
#include <iostream>
using namespace std;
class Myclass{
public:
static int DuiXiangNum; //静态成员变量在类外进行初始化
static int getDuiXiangNum()//静态成员函数不能直接访问非静态变量和非静态函数,
{ //因为静态函数在编译阶段就已经存在,非静态函数和变量在运行阶段存在,先存在的不能访问后存在的
return DuiXiangNum;
}
Myclass(){
DuiXiangNum++;
}
~Myclass()
{
DuiXiangNum--;
}
};
//静态成员变量在类外进行初始化
int Myclass::DuiXiangNum = 0;
int main()
{
Myclass m1;
cout << Myclass::getDuiXiangNum()<< endl;//1
Myclass m2;
cout << Myclass::getDuiXiangNum()<< endl;//2
{
Myclass m3;
cout << Myclass::getDuiXiangNum()<< endl;//3
Myclass m4;
cout << Myclass::getDuiXiangNum()<< endl;//4
}
Myclass m5;
cout << Myclass::getDuiXiangNum()<< endl;//3
Myclass* m6 = new Myclass;
cout << Myclass::getDuiXiangNum()<< endl;//4
delete m6;
cout << Myclass::getDuiXiangNum()<< endl;//3
return 0;
}