C++学习笔记:static关键字在类和结构体中的作用【Cherno】

首先,类和结构体中static变量会让在类和结构体【下文统称结构体】定义一个只有该类能调用的变量,且这个变量有一个很特殊的性质,比如你弄了个worker结构体,且在里面定义了一个static声明过的变量num,那么尽管你定义了多个worker实例,但每个worker中都没有一个num变量,但每一个worker实例都可以调用num,且最有意思的是每个worker调用的是同一个num;

我们写一个源.cpp如下:

#include<iostream>

class worker {
public:
	static int num;
	int wage, age;

	void show() {
		std::cout << wage << ' ' << age << std::endl;
	}

};

int worker::num;

int main() {

	worker a, b;

	a.num = 1;
	b.num = 2;

	std::cout << a.num;
}

有人可能要问:这个int worker::num;是一个什么东西,这其实很简单,因为num变量像是一个相对于worker类的一个”全局变量“,所以C++要求将类static变量独立声明,如果去掉这一句,则会报错:

 看上面main函数里的内容,如果num是一个常规变量时,那么输出的应该是1,但num是static变量,所以b.num和a.num是同一个变量,要看是不是同一个变量,我们只需要看两个变量的地址是否相同即可,我们输出a.num和b.num的地址:

 C++果然是最好的语言;

当然,我们也可以直接通过下面的语句调用num:

worker::num=1;

其实b.num和a.num都等价于上面的语句,这样可以更直观地看出两个其实是同一个变量;

我们也可以对类里面的方法【函数】进行static,但是这样的话,函数就会失去调用this指针的功能,即不可以调用在类中的非static变量,只能调用类里的static变量【不知道this指针的可以去百度一下,可能本菜以后会出一个相关的文章】;

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值