静态成员表示所有类对象都可以使用,
static成员数据必须在类外进行初始会。
Int student::cout=0;
可以直接使用作用域::从类中直接条用static成员,或者通过类对象,对象指针间接调用
student::count=0; 调用数据成员
int n=student::getcount() 调用成员函数
类对象访问:
student stu1;
stu1.cout=0;
student *s=&stu1;
int n=s->getcout();
j静态数据成员的使用:
#include<iostream>
using namespace std;
class test
{
private:
int k;
public:
static int n;
test(int x)
{
k = x;
n++;
}
void disp()
{
cout << "n=" << n << " k" << k << endl;
}
};
int test::n = 0;
int main()
{
test t1(10);
t1.disp();
test t2(20);
t2.disp();
test::n++;
t2.disp();
cout << t2.n << endl;
system("pause");
return 0;
}
2、静态成员函数
静态成员函数可以直接的应用该类的静态数据成员和成员函数,但是不能直接引用非静态成员。
如果想要引用非静态成员必须通过参数传递的方式得到对象名,通过对象名来引用非静态数据成员。
非静态成员函数的方式:
《类名》静态成员函数
对象名。静态成员函数
#include<iostream>
using namespace std;
class dot
{
private:
static int t;
int a, b;
public:
dot(int x = 0, int y = 0)
{
a = x;
b = y;
t++;
}
dot(dot& d);
int geta()
{
return a;
}
int getb()
{
return b;
}
static void gett()
{
cout << "objevt" << t << endl;
}
};
dot::dot(dot& d)
{
a = d.a;
b = d.b;
t++;
}
int dot::t = 0;
int main()
{
dot gett();
dot d1(2, 3);
cout << "dot d1:" << d1.geta() << d1.getb() << endl;
d1.gett();
dot d2(d1);
cout << "dot d2" << d2.geta() << d2.getb() << endl;
dot::gett();
system("pause");
return 0;
}
当ststic void gett()
{
cout<<t<<ednl; //没有错
cout<<a<<b<<endl; //出错的,因为a,b不是静态数据成员。
}