C++学习——静态成员

本文详细介绍了C++中的静态成员,包括静态数据成员和静态成员函数的概念、特性及应用场景。阐述了如何利用静态成员实现数据共享,并提供了具体的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

静态成员包括 静态数据成员 和 静态成员函数。当一个类的成员说明为static时,该类创建的所有对象都共享这个static成员,因此,静态成员是局部于类,而不是某个对象的特有成员。


静态数据成员:

如果定义n个同类的对象,那么每个对象都分别拥有自己的数据成员,各自有值,互不相关。有时需要某些数据成员在同类的多个对象之间可以共享,这就需要应用静态数据成员来实现。

在一个类中,若将一个数据成员说明为static,则该数据称为静态数据成员,它告诉编译器,无论建立多少个该类的对象,所有对象都共享一份静态数据成员。因此,静态数据的值对每个对象都是一样的。对静态数据成员的更新,就是对所有对象的该静态数据成员值的更新。

#include>num;
    cout<<"name?";
    cin>>name;
    cout<<"age?";
    cin>>age;
}

void Student::Disp()
{
    cout<<"学生的基本信息";
    cout<"学号"<

代码运行结果:
0  1  1   2   2  2



说明:
1、静态数据成员只在类内声明时使用static关键字。
2、静态数据成员一定要在类体外进行初始化。
3、一般数据成员是在对象建立时分配控件,在对象删除时释放空间。而静态数据成员是在程序编译时分配空间,到程序结束时释放空间。
4、静态数据成员在所有对象之外单独存放,而不占用对象的存储空间。
5、与普通的数据成员一样,静态数据成员也有public、private、protected之分。在类外只能访问public的静态数据成员,不能访问private、protected的静态数据成员,访问形式有两种:

类名::静态数据成员名
对象名.静态数据成员名


静态成员函数:

静态成员函数主要用来访问类的静态成员,不能直接访问类的非静态成员。与静态数据成员一样,类外调用public静态成员函数时候,可有两种形式:

<类名>::<静态成员函数名>(<参数表>)
<对象名>.<静态成员函数名>(<参数表>)
/*
题目:已知班级学生的学号、姓名、英语成绩、数学成绩,求各门功课的平均成绩。要求能单独求出某门课程的平均成绩。

分析:数据成员
	  对象独有:num(学号)、name(姓名)、english(英语成绩)、math(数学成绩)
	  对象共享:number(人数)、sum1(英语总分)、sum2(数学总分),定义为static成员
分析:成员函数
	  构造函数:对num、name、english、math数据成员进行初始化,并累加统计总人数。
	  求总分函数Total:计算总成绩sum1、sum2
	  求平均值函数Aver1、Aver2:类内所有对象共享定义为static成员
*/

#include
using namespace std;

class Student
{
    public:
        Student();
        void Init();
        void Disp();
        void Total();
        static float Aver1();
        static float Aver2();
        static int number;
        static float sum1;
        static float sum2;
    private:
        int num;
        char name[10];
        float english;
        float math;
};

int Student::number = 0;
int Student::sum1 = 0;
int Student::sum2 = 2;

Student::Student()
{
    Init();
    number+=1;
}

void Student::Init()
{
    cout<<"xuehao?";
    cin>>num;
    cout<<"name?";
    cin>>name;
    cout<<"english score?";
    cin>>english;
    cout<<"math score";
    cin>>math;
    
}
    
Void Student::Disp()
{
    cout<<"xuehao:"<


说明:

1、静态成员函数是一个特殊的成员函数,它的调用不依赖于任何一个特定的对象,因此静态成员函数中没用隐含的this指针,因此,即使通过对象调用也不会传递当前对象的地址,所以,在静态成员函数中,如果要引用非静态成员则要提供访问的对象。一般,静态成员函数主要是引用静态成员。
2、静态成员函数可以实现在建立任何对象之前处理静态数据成员,完成建立任何对象之前都需要的与操作,这是非静态成员函数所不能实现的。

电动汽车数据集:2025年3K+记录 真实电动汽车数据:特斯拉、宝马、日产车型,含2025年电池规格和销售数据 关于数据集 电动汽车数据集 这个合成数据集包含许多品牌和年份的电动汽车和插电式车型的记录,捕捉技术规格、性能、定价、制造来源、销售和安全相关属性。每一行代表由vehicle_ID标识的唯一车辆列表。 关键特性 覆盖范围:全球制造商和车型组合,包括纯电动汽车和插电式混合动力汽车。 范围:电池化学成分、容量、续航里程、充电标准和速度、价格、产地、自主水平、排放、安全等级、销售和保修。 时间跨度:模型跨度多年(包括传统和即将推出的)。 数据质量说明: 某些行可能缺少某些字段(空白)。 几个分类字段包含不同的、特定于供应商的值(例如,Charging_Type、Battery_Type)。 各列中的单位混合在一起;注意kWh、km、hr、USD、g/km和额定值。 列 列类型描述示例 Vehicle_ID整数每个车辆记录的唯一标识符。1 制造商分类汽车品牌或OEM。特斯拉 型号类别特定型号名称/变体。型号Y 与记录关联的年份整数模型。2024 电池_类型分类使用的电池化学/技术。磷酸铁锂 Battery_Capacity_kWh浮充电池标称容量,单位为千瓦时。75.0 Range_km整数表示充满电后的行驶里程(公里)。505 充电类型主要充电接口或功能。CCS、NACS、CHAdeMO、DCFC、V2G、V2H、V2L Charge_Time_hr浮动充电的大致时间(小时),上下文因充电方法而异。7.5 价格_USD浮动参考车辆价格(美元).85000.00 颜色类别主要外观颜色或饰面。午夜黑 制造国_制造类别车辆制造/组装的国家。美国 Autonomous_Level浮点自动化能力级别(例如0-5),可能包括子级别的小
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值