1, static 成员变量实现了同类对象间信息共享。
2, static 成员类外存储, 求类大小, 并不包含在内。
3, static 成员是命名空间属于类的全局变量, 存储在 data 区。 不在堆栈中。
4, static 成员只能类外初始化。!!! 无论是private 还是public
5, 可以通过类名访问(无对象生成时亦可), 也可以通过对象访问。
1, 静态成员函数的意义, 不在于信息共享, 数据沟通, 而在于管理静态数据成员, 完
成对静态数据成员的封装。
2, 静态成员函数只能访问静态数据成员。 原因 : 非静态成员函数, 在调用时this 指
针被当作参数传进。而静态成员函数属于类, 而不属于对象, 没有 this 指针。
#if 0
1, static 成员变量实现了同类对象间信息共享。
2, static 成员类外存储, 求类大小, 并不包含在内。
3, static 成员是命名空间属于类的全局变量, 存储在 data 区。 不在堆栈中。
4, static 成员只能类外初始化。!!! 无论是private 还是public
5, 可以通过类名访问(无对象生成时亦可), 也可以通过对象访问。
1, 静态成员函数的意义, 不在于信息共享, 数据沟通, 而在于管理静态数据成员, 完
成对静态数据成员的封装。
2, 静态成员函数只能访问静态数据成员。 原因 : 非静态成员函数, 在调用时this 指
针被当作参数传进。而静态成员函数属于类, 而不属于对象, 没有 this 指针。
#endif
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
using namespace std;
class Student
{
public:
Student(int id,double score)
{
m_id = id;
m_score = score;
count++;
sum += score;
}
~Student()
{
count--;
sum -= m_score;
}
//静态成员函数只能访问静态数据成员。
static double getCount()
{
return count;
}
static double getAverage()
{
return sum / count;
}
//初始化必须在类外部
//因为是公有成员,类外可以直接使用 Student::count
// static int count;//记录学生总数
// static double sum;//记录学生总分
private:
int m_id;
double m_score;
//初始化必须在类外部
//因为是私有成员,类外不能直接使用
static int count;//记录学生总数
static double sum;//记录学生总分
};
//初始化必须在类外部
int Student::count = 0;
double Student::sum = 0;
int main()
{
Student s1(10, 80);
Student s2(11, 90);
Student s3(12, 100);
cout << "学生个数是: " << Student::getCount() << endl;
cout << "平均分是: " << Student::getAverage() << endl;
//如果count和sum在public中,可以直接使用
//cout << "学生个数是: " << Student::count << endl;
//cout << "平均分是: " << Student::sum/Student::count << endl;
}