011--C++类的静态成员static(最优)

简介:关于类的特俗成员变量,就两个static类静态成员变量及函数以及const类常成员变量以及函数。他们的最本质的区别就是static相当于临时变量,可以修改,但是const不是,它是固定的不可更改的数据。所以,使用它们的时候一定要想到它们最本质的区别。

静态成员:包含静态数据成员和静态函数成员。然后你要加关键字:static

使用Static可以进行五种说明:

  1. 局部静态变量(使用域仅在局部,生命周期在全局)
  2. 全局静态变量(使用域在单文件,生命周期在全局)相当于文件全局变量
  3. 静态函数(函数的作用域默认是全局,加上静态修饰,这个函数的作用域就变成单文件)
  4. 类的静态数据成员,表示该数据不属于某个类对象,不管这个类会生成多少对象,所有对象所共享这个静态数据。这个静态数据只有一份存在内存中(全局数据区)
  5. 类的静态函数成员,这个函数不属于对象,只属于类,所以无法操作对象的成员数据,一般情况下只用来操作类的静态数据成员和静态函数成员(非静态成员函数,可以操作静态数据成员,也可以操作静态函数成员,普通的也都可以)

代码实践(有注释):

//类的特殊成员:静态成员。
//静态成员首先,你要想它到底为什么要静态,在类中,相当于避免了数据的
//多次加载,节约了运行的成本.
//举个列子,简单说明。比如你要建立一百个对象,这一百个对象相当于一个军队
//的士兵,这些士兵有一些共同的特点,比如(每天都要站岗),这是每个士兵
//最基本的特征。现在,领导想看这些士兵站岗,但是为了能及时让领导看到
//士兵站岗这个动作,你就需要使用static.也就是你只需要让一个士兵去表演
//站岗。避免了让全体士兵都站岗。也就是我们这里所说的避免了类的多次重复加载。
#include<iostream>
#include"test.h"
using namespace std;
static int m1=10;//全局静态变量,相当于int m1=10.可以不用写static,但是你要写在main文件外。
static int add(int a,int b){
	return a + b;
}
class MyStu{//针对一个班级建立的类
	static int grade;//班级是一个固定的数,只能声明,不能定义。
	int age;//类内数据不占内存
public:
	static int getMes(){//类的静态函数只能调用类的所用静态变量以及函数
		return grade;
	}
	void getAll(){
		cout << grade << endl;
		grade = 8;
		cout << grade << endl;
		getMes();
		cout << grade << endl;
	}
	MyStu(){}
	MyStu(int age){
		this->age = age;
	}
};
int MyStu::grade = 7;//类的静态数据成员必须在类外定义,类内声明。
void main(){
	cout << "局部静态变量:" << endl;
	for (int i = 0; i < 4; i++){
		static int m = 0;
		printf("m=%d\n",m++);
	}//未使用static,输出的数据全是0;使用了static,输出0,1,2,3
	cout << "------------------------" << endl;
	cout << "全局静态变量:" << endl;
	cout << m1 << endl;
	cout << "------------------------" << endl;
	cout << "静态函数:" << endl;
	int m2 = add(1, 3);
	cout << m2 << endl;
	cout << "------------------------" << endl;
	cout << "类的静态成员变量:" << endl;
	MyStu s(2);
	cout << s.getMes()<< endl;
	MyStu s1;
	cout << s1.getMes() << endl;
	s1.getAll();
	cout << "------------------------" << endl;
}

敲代码的时候想到那个自己很喜欢的女孩子,我感觉全身棒哒哒的··········

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

码字界陈冠希

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

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

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

打赏作者

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

抵扣说明:

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

余额充值