C++类的static(静态)成员

一、静态数据成员

1.存储空间的分配

定义类时分配空间,一般的数据成员依附于对象,定义类时不为其分配存储空间,只有定义对象时才分配存储空间。而静态数据成员不依附于任何特定对象,为所有对象所共有,不是定义对象时才分配存储空间,而是定义类时就为静态数据成员分配存储空间,供各对象所共享使用。

2.在程序运行时始终存在

对于静态数据成员,定义类时分配存储空间,程序结束时才收回分配的存储空间。

3.只能在类外进行初始化

对静态数据成员的初始化,只能在类外进行,赋值语句的语法如下:

类型吗 类名:: 静态数据成员名=初值;

例如:

int A::a=0;//将A类的静态数据成员赋值为0

如果没有为静态成员赋值,系统默认初值是0.

4.可以通过类名访问

一般数据成员只能通过对象名或者指针方式访问,而静态数据成员既可以通过对象名或指针的方式访问,也可以通过类名访问:
语法如下:

类名::对象名;

如访问类A中的静态成员a:

cout<<A::a<<endl;

二、静态成员函数

1.声明格式

static 返回类型 函数名(形式参数表);

2.访问方式

和静态数据成员一样,静态成员函数既可以通过对象名调用也可以通过类名调用。

三、示例

//创建教职工类
class Employee
{
public:
    Employee(int num = 0, string name = "", float salary = 0);//带默认值的构造函数
    void setValue(int num = 0, string name = "", float salary = 0);//赋值函数
    void total();//总数的求法
    static void average();//求平均工资
private:
    int empNum;     //职工编号
    string empName; //职工姓名
    float empSalary; //职工工资
public:
    static int empSumEmp;//职工总数
    static float empSumSal;//工资总额
    static float empAveSal;//平均工资

};
int Employee::empSumEmp=0;//职工总数在类外初始化
float Employee::empSumSal=0;//工资总额在类外初始化
float Employee::empAveSal=0;//平均工资在类外初始化
Employee::Employee(int num, string name, float salary)
{
    empNum = num;
    empName = name;
    empSalary = salary;
}
void Employee::setValue(int num , string name, float salary)//赋值函数的定义
{
    empNum = num;
    empName = name;
    empSalary = salary;

}
void Employee::total()//总数的求法
{
    empSumSal+= empSalary;
    empSumEmp++;
}
void Employee::average()//求平均工资
{
    empAveSal = empSumSal / empSumEmp;
}

主函数中有如下代码:

Employee emp[5];//创建对象数组
    for (int i = 0; i < 5; i++)
    {
        int num;
        string name;
        float salary;
        cout << "输入职工编号" << endl;
        cin >> num;
        cout << "输入职工姓名" << endl;
        cin >> name;
        cout << "输入职工工资" << endl;
        cin >> salary;
        emp[i].setValue(num, name, salary);//位每个对象赋值
    }
    for (int i = 0; i < 5; i++)
    {
        emp[i].total();//求总和
    }
    Employee::average();//求平均工资
    cout << "职工总数=" << Employee::empSumEmp << endl;//类作用域访问静态成员
    cout << "工资总额=" << Employee::empSumSal << endl;
    cout << "平均工资=" << Employee::empAveSal << endl;

运行截图如下:
这里写图片描述
这里写图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
智慧校园整体解决方案是响应国家教育信息化政策,结合教育改革和技术创新的产物。该方案以物联网、大数据、人工智能和移动互联技术为基础,旨在打造一个安全、高效、互动且环保的教育环境。方案强调从数字化校园向智慧校园的转变,通过自动数据采集、智能分析和按需服务,实现校园业务的智能化管理。 方案的总体设计原则包括应用至上、分层设计和互联互通,确保系统能够满足不同用户角色的需求,并实现数据和资源的整合与共享。框架设计涵盖了校园安全、管理、教学、环境等多个方面,构建了一个全面的校园应用生态系统。这包括智慧安全系统、校园身份识别、智能排课及选课系统、智慧学习系统、精品录播教室方案等,以支持个性化学习和教学评估。 建设内容突出了智慧安全和智慧管理的重要性。智慧安全管理通过分布式录播系统和紧急预案一键启动功能,增强校园安全预警和事件响应能力。智慧管理系统则利用物联网技术,实现人员和设备的智能管理,提高校园运营效率。 智慧教学部分,方案提供了智慧学习系统和精品录播教室方案,支持专业级学习硬件和智能化网络管理,促进个性化学习和教学资源的高效利用。同时,教学质量评估中心和资源应用平台的建设,旨在提升教学评估的科学性和教育资源的共享性。 智慧环境建设则侧重于基于物联网的设备管理,通过智慧教室管理系统实现教室环境的智能控制和能效管理,打造绿色、节能的校园环境。电子班牌和校园信息发布系统的建设,将作为智慧校园的核心和入口,提供教务、一卡通、图书馆等系统的集成信息。 总体而言,智慧校园整体解决方案通过集成先进技术,不仅提升了校园的信息化水平,而且优化了教学和管理流程,为学生、教师和家长提供了更加便捷、个性化的教育体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

随机的未知

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值