C/C++ static关键字用法总结

C/C++static关键字用法总结

static若修饰以下时:

全局变量 外延性 ,加上static后, 作用域仅限于本文档

局部变量 存储位置从栈上变成data段的rw段(未初始化时放在bss段),生命周期跟整个进程的周期一样

1,类外

1static全局变量
static int a;
这个变量的含义是在该cpp内有效,但是其他的cpp文件不能访问这个变量;如果有两个cpp文件声明了同名的全局静态变量,那么实际上他们是独立的两个变量。
2,static局部变量
void func()
{
static int a;
}
静态局部变量使用static修饰符定义,即使在声明时未赋初值,编译器也会把它初始化为0。且静态局部变量存储于进程的全局数据区,即使函数返回,它的值也会保持不变。

3,只在cpp内有效的全局函数

static void fun();

函数的实现不需要static修饰,那么这个函数只可在本cpp内使用,不与其他cpp中的同名函数引起冲突;

2,类内

1,static成员变量

在生成对象的时候,普通数据成员才有空间。而 static 成员在类声明的时候,就已经开辟了空间,在data rw段。
static 数据成员,既属于类,也属于对象,但终归属于类。
static数据成员要在类外进行初始化,使用类的作用域来进行初始化。

#include<iostream>
using namespace std;

class A
{
public:
	void print()
	{
		cout << share << endl;
	}
	void func(int m)
	{
		share = m;
	}
	static int share;  //类外初始化
};
int A::share = 10;
int main()
{
	A a,b,c;
	a.print();   //10
	b.func(100);
	
	b.print();//100
	c.print();//100  static share 属于类
}

2,static成员函数

作用只有一个,用于管理static成员。

static修饰的成员函数,既属于类也属于对象,但终归属于类

static修饰的成员函数,因为它属于类,所以没有 this 指针 ,不能访问非static数据成员,以及成员函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值