5.3 类的静态成员

目录

1、定义-静态数据成员

2、定义-静态函数成员

3、静态数据成员、静态函数成员-实例(借书卡类)

4、总结


1、定义-静态数据成员

  • 类的所有对象共同拥有的一个数据成员
  • 使用储存类型关键字"static"在类体内声明
  • 类体外定义或者初始化

由于静态数据成员不属于任何对象,那么对象创建时就不会为他分配存储空间。

为此,静态数据成员在类体内声明后,必须在类体外定义或者初始化,才能完成在全局数据去的存储分配。

2、定义-静态函数成员

  • 如果需要在对象创建之前操作静态数据成员,只能使用静态函数成员
  • 静态函数成员和静态数据成员一样,属于类而不是某一个对象
  • 静态成员函数只能访问类中的静态成员

3、静态数据成员、静态函数成员-实例(借书卡类)

#include <iostream>
using namespace std;
class Bookcard {
private:
	int  id;
	static int sum;            //静态数据成员,表示图书总数,属于整个类
public:
	Bookcard(int n=0):id(n){}
	static void set(int n) {    //静态函数成员:设置初始图书量,在定义对象之前,对sum进行初始化
		sum = n;
	}
	static int getSum() {       //静态函数成员,返回sum的值
		return sum;
	}
	void takeBook(int n) {     //借书函数
		sum -= n;
	}
	void backBook(int n) {      //还书函数
		sum += n;
	}
	~Bookcard(){}
};
int Bookcard::sum;              //类外对sum定义,但没有初始化,留到主函数设初值
int main()
{
	int bnew;
	cout << "请设置初始图书数量" << endl;
	cin >> bnew;
	Bookcard::set(bnew);
	cout << "book is:" << Bookcard::getSum() << endl;  //在没有定义对象之前,用类名::函数名                      
	Bookcard c1(2020211402);                             的方式调用静态成员函数
	c1.takeBook(10);  //定义对象后,用对象名.函数名的方式调用
	c1.backBook(5);
	cout << "book is:" << c1.getSum();


}

4、总结

静态函数成员的2种外部访问形式:

1.对象创建前:类名::静态成员函数名(参数表)

2.对象成员创建后:对象名.静态成员函数名(参数表)或类名::静态成员函数名(参数表)(此时,二者共存)

 其他说明:

  • 出现在类体外的函数不能指定关键字static
  • 静态成员之间可以相互访问
  • 非静态成员函数可以任意访问静态成员函数和静态数据成员
  • 静态数据成员不能访问非静态成员函数和非静态数据成员
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值