c++进阶五(static数据成员)

static(静态存储)数据成员,在编译时就被创建和初始化,在程序结束时被销毁
并且在类中静态数据成员只有一个实例,对所有该类的对象共享

就如住在一个宿舍中的学生,共享这个宿舍的门牌号

一,定义静态数据成员

注意需要在类的外面对静态成员变量进行初始化!!!!
否者静态变量未初始化会报错 且不要放在.h文件中进行初始化,因为可能有多个cpp包含同一个.h文件

下面看一个实例:

#include <iostream>
using namespace std;
class computer
{
private:
	float price;
	//这里并没有进行初始化 
	static float total_price; //静态数据成员,表示总价格 向编译器描述如何为static成员分配内存 
public:
	computer(float p)
	{
		price=p;
		total_price += p;
	}
	void print()
	{
		cout<<total_price;
	}
	~computer()
	{
		total_price-=price;
	}
};
//注意!!!在类的外面进行静态变量的初始化为0 不能在类中进行初始化 
//在这里对静态变量真正的分配内存 
float computer::total_price=0;
int main()
{

	computer p1(4561);
	cout<<"购买一台电脑的价格为:"; 
	p1.print();
	computer p2(10000);
	cout<<endl; 
	cout<<"购买两台电脑的价格为:"; 
	p2.print();
	cout<<endl;
	cout<<"退掉电脑2后的价格:";
	p2.~computer(); 
	//使用p1.print()同时也可以查看此时价格 
	p1.print(); 
	return 0;
 } 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值