关于静态变量和函数粗浅理解(很粗,很浅)

本文详细介绍了C++中静态成员变量和静态成员函数的概念、作用及使用方式,并通过具体示例解释了它们的区别与联系。此外,还探讨了静态局部变量的特性及其应用场景。

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

<pre name="code" class="cpp">
#include<iostream>
#include<string>
using namespace std;
// int n;

//***************************************类中的静态成员变量*******************************************************
class Stu{
	public:
		int id;
		string name;
		static int num;	//由于不属于任何一个对象而是属于整个类,所以在没有构造对象之前就可以对它进行访问,访问时
										//访问格式见 line35
										//遵循访问规则(public,private,protected)
//******************************************静态成员函数**********************************************************
		static int getNum(){	//没有this指针		
			return num;
		}			//只能访问静态成员变量
					//在此修改,在没有参数表的情况下才是只能访问静态变量,如果有参数表,可以访问参数对象的私有,保护,公有变量
					//不能定义为虚函数(个人理解:本质并不属于某个对象,无所谓继承和多态性)
					//访问格式见 line33
};
int Stu::num =0;//静态成员不储存在类中,初始化时要分配内存,所以在类外声明
								//区别于定义的全局变量,要加Stu::命名空间
								//在类外声明静态函数时要省略static,和静态变量的声明类似
void f(int & a){
	a+=1;
}

int main(){
	///cout<<n<<endl;
	//n=3;
	//****************************************************静态变量**********************************************************	
	//********静态成员变量和函数的访问规则
	cout<<Stu::getNum()<<endl;
	cout<<Stu::num<<endl;
	Stu a;
	cout<<a.num<<endl;
	cout<<a.getNum()<<endl;
	
	for(int i=0;i<10;i++){
		static int n = 0;	//在程序块中声明只会被初始化一次
											//该变量的值会一直保存,直到下一次该函数再次被调用
											//该函数结束的时候,n的内存不会被释放,而是在整个程序结束的时候被释放
											//该变量不能在函数之外被访问
											//ps:以上说的函数是指一个程序块{}
											//优势在于如果是在f()内定义的话,变量的值保存到下次被调用
		cout<<n<<endl;
		n++;
	}
			//cout<<" "<<n<<endl;
			//	f(n);		//静态全局变量不能被别的文件调用,但是可以被函数赋值修改
			//而extern int n定义之后如果在别的文件中声明extern int 的话可以调用
			//cout<<"  "<<n<<endl;
//*******************************************************静态函数*******************************************************
//		只能在本文件中使用,其他文件中定义相同的名字不会有重名的冲突

	return 0;
}


//***********************
//小结
//	1)	静态变量 和 静态成员变量 可以统一理解,
//			把类看作一个函数
//			或者把函数看作一个拥有命名空间的类

//	2) 静态函数用的不多,静态成员函数访问规则和理解也都见注释
//	






                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值