C++ static 关键字

参考自:https://www.cnblogs.com/forsee/p/11822025.html

C++ static 关键字详解

在类外的作用

1.变量

局部变量

局部变量即是在函数或一个代码块内部声明的变量。
当局部变量被定义时,系统不会对其初始化;
作用域为函数或一个代码块;
局部变量储存在栈里,离开作用域就会无效。

在局部变量前面加上关键字 static,该变量变为静态局部变量。
变量在定义时,必须初始化,如果没有初始化,系统会自动对其初始化,如 int 型初始化为 0;
储存在全局变量区,一直存在直到程序运行结束。
静态局部变量相当于一个全局变量!

全局变量

全局变量是在函数体外部声明的变量
在全局变量区分配存储空间,且编译器会自动对其初始化
作用域为整个程序,即包括所用的源文件和头文件
其他文件可以使用extern外部声明后直接使用,其他文件不能定义相同的变量

在全局变量前面加上关键字 static,该变量变为静态全局变量
只能在本文件中访问,不能在其它文件中访问,即便是extern外部声明也不可以
作用域只在本文件
其他文件可以定义与其同名的变量,两者互不影响

2.函数

函数就是完成特定任务的独立程序代码单元。
static 在函数的使用方法是在函数的返回类型前面加上 static。其作用与全局变量类似。

静态函数只在声明它的文件中可见,其他文件不能引用该函数;
其他文件可以定义与其同名的变量,两者互不影响;

在类中的作用

一个类包含 数据成员 和 成员函数;

数据成员

在数据成员前加上 static 关键字,声明静态数据成员。
静态数据成员存储在全局变量区,静态数据成员在定义时分配存储空间;
在使用之前必须初始化,它的初始化在main()之前;
静态数据成员不属于任何对象。即使不定义类的任何对象它们也存在,在整个程序中只有一个,而且所有对象都可以对它进行操作;
与静态全局变量相比,静态数据成员变量不与程序中的其他全局变量冲突。

成员函数

在成员函数前加上 static 关键字,声明静态成员函数。其作用与静态数据成员类似。

静态成员函数不属于任何对象。调用时,它们无 this 指针,任何对象都可以调用;
静态成员函数不能为 virtual、const 或 volatile;
静态成员函数的地址可以存储在常规的函数指针中,但不能存储于成员函数指针中;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值