总结8:静态变量/函数

本文深入探讨了C++中静态变量的特性,包括函数内的静态变量与类中的静态变量,以及静态函数的使用限制。详细解释了静态变量的生命周期、初始化方式,以及静态成员函数的调用方法。

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


本文PDF下载站点: https://github.com/MrWang522/Private-Document.git


1. 函数中的静态变量

  • 要点: 与C一样
  • 描述: 函数中的static变量,在 程序 的生命周期内分配, 且只初始化一次!
void demo() { 
    static int count = 0; 
    cout << count << " "; 
    count++; 
} 

void Test() { 
    for (int i=0; i<5; i++)  demo(); // 打印 0 1 2 3 4 
} 

2. 类中的静态变量

  • 类中的静态变量 对象共享
  • 静态变量 不能使用 构造函数初始化 (相同类中的 静态变量 是共享的)
class MyClass{
public:
	static int i;
	MyClass(){ 
		// Do nothing 
	}; 
};

int Apple::i = 1;	// 静态变量 只能在外部 初始化

void function() {
	MyClass obj1, obj2;
    obj2.i = 3;
	obj2.i = 2;
	cout << obj1.i;	// 打印2  相同类中的 静态变量 是共享的
}

3. 类中的静态函数

  • 类中的静态成员函 没有this指针
  • 在类外(或通过对象调用)调用静态成员函数用 类名::作限定词
class MyClass{ 
public: 
	static void printMsg() {
		cout<<"Welcome to Apple!"; 
	}
}; 

void function() { 
    MyClass::printMsg(); 
} 

重点: 类中的静态成员函数内,不能使用类中的普通变量,否则编译器报错 !!!

class MyClass{
int x;				// 普通变量
static int i;		// 静态变量
public:
	MyClass():x(100){}
	
	static void tFun() {
		cout << "i = " << i << endl;		// 正常使用
		cout << "x = " << x << endl;		// 此处编译器报错 !!! EO245 非静态成员引用必须与特定对象相对
	}
};

int MyClass::i = 200;	// 这里是 让编译器 分配内存!!!!
void Test() {
	MyClass obj;
	obj.tFun();
}

写文不易 且行且珍惜
MrWang
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

盗骊

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

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

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

打赏作者

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

抵扣说明:

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

余额充值