博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c与c++的static
阅读量:6306 次
发布时间:2019-06-22

本文共 1659 字,大约阅读时间需要 5 分钟。

hot3.png

面向过程

静态局部变量

在函数体内,一个被声明为静态的变量在这一函数被调用过程中维持其值不变(该变量存放在静态变量区)

#include 
#include 
using namespace std;void counter(){    static int count = 0;    ++count;    cout<
<<" time called!"<

output:

1 time called!

2 time called!

3 time called!

4 time called!

静态全局变量

在模块内,在函数体外,一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问,它是一个本地的全局变量

静态函数

在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用,这个函数被限制在声明它的模块的本地范围内使用

面向对象

静态数据成员

在类中的static成员变量意味着它为该类的所有实例所共享,也就是说当某个类的实例修改了该静态成员变量,其修改值为该类的其它所有实例所见

初始化:静态数据成员必须初始化,并且只能在类外初始化;由于静态数据成员不属于某一个对象,因此不能通过构造函数的方式初始化静态数据成员

静态函数成员

在类中的static成员函数属于整个类所拥有,这个函数不接收this指针,非静态成员函数可以任意地访问静态成员函数和静态数据成员;静态成员函数不能访问非静态成员函数和非静态数据成员

#include 
#include 
using namespace std;class testStatic{      private:              static int a;//不允许在内部初始化不是const类型的static变量               static const int aconst=10;              int b;              public:                     testStatic(){}                     testStatic(int btemp){                         b=btemp;                     }                     static int geta(){                         ++a;                         return a;                     }      };int testStatic::a=100;//类中静态成员初始化的形式,主函数调用之前完成初始化,程序结束释放 int main(int argc, char *argv[]) {        testStatic test1;    cout<
<
<
<

static存储

 函数内部定义的变量,在程序执行到它的定义处时,编译器为它在栈上分配空间,函数在栈上分配的空间在此函数执行结束时会释放掉, static被引入以告知编译器,将变量存储在程序的静态存储区而非栈上空间

static优势:可以节省内存,因为它是所有对象所公有的,对多个对象来说,静态数据成员只存储一处,供所有对象共用。静态数据成员的值对每个对象都是一样,但它的值是可以更新的。只要对静态数据成员的值更新一次,保证所有对象存取更新后的相同的值,这样可以提高时间效率。

转载于:https://my.oschina.net/hnuweiwei/blog/284467

你可能感兴趣的文章
oracle conn /as sysdba后显示 乱码”???“
查看>>
(三)把域服务升级和迁移到Windows Server 2012 R2上
查看>>
动态主机配置协议:DHCP简介
查看>>
跟我学Spring Cloud(Finchley版)-05-服务注册与服务发现-Eureka入门
查看>>
VisualStudio不让控制台程序一闪而过
查看>>
交换机配置
查看>>
python读取excel表格的数据
查看>>
折半查找
查看>>
写给创始人的期权问答及实操白皮书(连载一)
查看>>
jenkins集成sonarqube
查看>>
snort 中的Boyer-Moore
查看>>
ip_append_data
查看>>
百度云
查看>>
py Image模块的介绍
查看>>
Spring和Hibernate动态建表及动态加载映射文件(无需Session factory...
查看>>
Codis作者黄东旭细说分布式Redis架构设计和踩过的那些坑们
查看>>
ActiveMQ学习笔记04 - 基于LevelDB的高可用
查看>>
163
查看>>
在一个Bundle里如何加载服务配置
查看>>
宏带来的副作用
查看>>