1.静态数据:
静态数据成员作用:将个对象中的数据成员值变成一样的(实现了资源共享)
好处:既可以通过对象名访问公用的静态数据成员,也可以通过类名引用静态数据成员
类名::数据成员
对象.数据成员
得出结论:静态数据成员并不属于对象,而属于类,但类的对象也可以引用
注意:
1.与静态变量相似,在对象的创建与销毁时,并不会影响静态成员,只有在程序结束时才会进行释放
2.不能够用初始化列表来对成员进行初始化,只能在类外进行
3.静态数据成员与全局变量不同,静态数据成员的作用域就局限与该定义的类中
2.静态成员函数
好处:与数据成员一样,既可以通过对象名访问公用的静态数据成员,也可以通过类名引用静态数据成员
类名::函数名();
对象.函数名();
注意:
1.非静态成员函数有this指针,而静态成员函数没有,由此可知静态成员函数不能访问本类中的非静态成员,只能访问静态成员函数,下面就是很好的例子,希望大家认真观看
用于计算三个学生的平均成绩
#include<iostream> using namespace std; class Student { public: Student(int n, int a, float s): num(n), age(a), score(s) {} void total(); static float average(); private: int num; int age; float score; static float sum; static int count; }; void Student::total() { sum += score; count++; } float Student::average() { return (sum / count); } float Student::sum = 0; int Student::count = 0; //在类外初始化静态成员 int main() { // 定义三个同学的基本信息 Student stu[3] = { Student(1001, 18, 70), Student(1002, 19, 78), Student(1003, 20, 98) }; int n; cin >> n; for (int i = 0; i < n; i++) { stu[i].total(); } cout << Student::average(); return 0; }