静态成员变量
static 在类中使用的时候,大家可以共享他的数据,就是无论创建多少个对象,都是共享一个静态成员,举个例子
class stu
{
static int c;
public:
void put (int a)
{
c=a;
}
void get ()
{
cout <<"c="<<c<<endl;
}
void plus()
{
c+=2;
}
};
int stu::c=0; //静态成员的初始化,他只能初始化在类的外部
int main(int argc, char *argv[])
{
stu my;
my.put(10);
stu my1;
my.get();
my.plus();
my1.plus(); //不同的类对c这个成员进行加法运算,但是都是在上一个的基础上
my.get();
return 0;
}
静态成员函数
就是在成员函数前面加上static,但是由于他分不清是哪个类的,所以他没有this指针
class stu
{
static int c;
public:
int p;
void put (int a)
{
c=a;
}
void putp (int a)
{
p=a;
}
void get ()
{
cout <<"c="<<c<<endl;
}
void plus()
{
c+=2;
}
static void my_cout ();
};
int stu::c=0;
void stu:: my_cout ()
{
cout <<"c="<<c<<endl;
cout <<"p="<<p<<endl;//错误,不能访问
}
int main(int argc, char *argv[])
{
stu my;
my.put(10);
my.putp(10);
my.my_cout();
stu my1;
my.get();
my.plus();
my1.plus();
my.get();
return 0;
}
我们观察结果知道,静态函数有如下的特点
- 出现在类体外函数体不能定义static
- 静态函数和静态成员之间可以相互访问
- 但是静态函数不能访问非静态函数的成员
优点:由于没有this指针的额外,速度快!