c++之静态数据成员与静态成员函数

本文深入解析静态数据成员和静态成员函数的概念及应用。静态数据成员为类所有对象共享,如统计Car类实例总数;静态成员函数为类共有,不依赖于特定对象,如获取Car总数。文中提供定义与初始化示例。

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

什么是静态数据成员?

数据成员我们之前学过,是对象的属性。
同一个类,不同的对象,可能拥有不同的属性

例如一个车行,不同的车有不同的颜色,不同的耗油量。。。等等属性

但是当我们统计一个公有的数据,用数据成员有点麻烦
比如每一辆Car,里面有一个数据成员CarNum,记录了车行的总车数,
如果每一个对象,都分别带着CarNum这个数据成员,会有些不方便。

为此,我们需要一个类公有的数据成员,就是静态数据成员
每个对象与静态数据成员关系如下图
在这里插入图片描述

静态数据成员的定义以及初始化

静态数据成员用关键字 “static” 定义
如果静态数据成员是public,可以在主函数里面
用 类名::静态数据成员名 访问

由于静态数据成员是类公有的,所以不能在构造函数初始化,应该在类定义完成后,对其进行初始化

定义格式:

class Car
{
public:
	static int CarNum;
	Car(){CarNum++;}//新建一个Car对象时候,车数量加一
	~Car(){CarNum--;}//销毁一个Car对象时候,车数量减一
};
int Car::CarNum=0;	//静态成员函数的初始化

什么是静态成员函数?

上面我们了解了什么是静态数据成员。
静态成员函数也可以类比,是一个类的共有的成员函数

定义格式:

class Car
{
public:
	static int CarNum;
	Car(){CarNum++;}//新建一个Car对象时候,车数量加一
	~Car(){CarNum--;}//销毁一个Car对象时候,车数量减一
	
	static int getCarNum(){return CarNum;}
};
int Car::CarNum=0;	//静态成员函数的初始化

int main()
{
	Car::getCarNum();	//静态成员函数调用
	return0;
}
几点注意:
  • 由于静态成员函数是共有的,所以参数列表里面没有隐含this指针,不可以用const修饰静态成员函数
  • 静态成员函数只能访问静态数据成员,不可以访问普通的数据成员
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值