在n个同类的对象中,如果想同类的多个对象之间实现数据共享,不用全局变量,可以使用静态的数据成员。
静态数据成员:
1.各对象共享,修改值全部改变
2.不属于某一对象,是在所有对象之外所开辟的空间
3.与静态变量类似,不随对象的建立而分配空间,也不随对象的撤销而释放空间
4.静态数据成员只能在类外初始化
class box:
{
static int height;
}
int box::height=10;
5.可以通过对象名或类名引用
#include<iostream>
using namespace std;
class box:
{
static int height;
}
int box::height=10;
int main(){
box a,b;
cout<<a.height;
cout<<box::height;
return 0;
}
静态成员函数:
1.不是为了实现对象之间的沟通,而是为了处理静态数据成员
2.静态成员函数中没有this指针,所以不能访问本类中非静态成员,只是不能进行默认访问,因为 不知道应该去找哪个对象,引用时应加上对象名和运算符‘.’
cout<<a.height;
3.类的一部分
4.可以通过类或对象名访问
static int volume();//类box中定义
int main(){
box::volume();
a.volume();
}
总结:
1.在静态成员函数中如果想引用非静态数据成员时,应考虑到对象的作用域,解决此问题可以在调 用average函数时将实参对象传给average函数
float Student::average(Student stu){
cout<<stu.score;
}
2.最好养成习惯,在c++程序中:只用静态成员函数引用静态数据成员,而不是引用非静态数据成员