C++对象的生存期笔记
下面随笔记录了C++对象的生存期知识
静态生存期
这种生存期与程序的运行期相同。
在文件作用域中声明的对象具有这种生存期。
在函数内部声明静态生存期对象,要冠以关键字static 。
动态生存期
块作用域中声明的,没有用static修饰的对象是动态生存期的对象(习惯称局部生存期对象)。
开始于程序执行到声明点时,结束于命名该标识符的作用域结束处。
举例代码
1 #include<iostream>
2
3 using namespace std;
4
5 int i = 1; // i 为全局变量,具有静态生存期。
6
7 void other() {
8
9 static int a = 2;
10
11 static int b;
12
13 // a,b为静态局部变量,具有全局寿命,局部可见。
14
15 //只第一次进入函数时被初始化。
16
17 int c = 10; // C为局部变量,具有动态生存期,
18
19 //每次进入函数时都初始化。
20
21 a += 2; i += 32; c += 5;
22
23 cout<<"---OTHER---\n";
24
25 cout<<" i: "<<i<<" a: "<<a<<" b: "<<b<<" c: "<<c<<endl;
26
27 b = a;
28
29 }
30
31
32
33 int main() {
34
35 static int a;//静态局部变量,有全局寿命,局部可见。
36
37 int b = -10; // b, c为局部变量,具有动态生存期。
38
39 int c = 0;
40
41 cout << "---MAIN---\n";
42
43 cout<<" i: "<<i<<" a: "<<a<<" b: "<<b<<" c: "<<c<<endl;
44
45 c += 8; other();
46
47 cout<<"---MAIN---\n";
48
49 cout<<" i: "<<i<<" a: "<<a<<" b: "<<b<<" c: "<<c<<endl;
50
51 i += 10; other();
52
53 return 0;
54
55 }
运行结果
1 运行结果:
2
3 ---MAIN---
4
5 i: 1 a: 0 b: -10 c: 0
6
7 ---OTHER---
8
9 i: 33 a: 4 b: 0 c: 15
10
11 ---MAIN---
12
13 i: 33 a: 0 b: -10 c: 8
14
15 ---OTHER---
16
17 i: 75 a: 6 b: 4 c: 15
C++对象的生存期笔记的更多相关文章
- C++中临时对象的学习笔记
http://www.cppblog.com/besterChen/category/9573.html 所属分类: C/C++/STL/boost 在函数调用的时候,无论是参数为对象还是返回一个对 ...
- windows内核对象管理学习笔记
目前正在阅读毛老师的<windows内核情景分析>一书对象管理章节,作此笔记. Win内核中是使用对象概念来描述管理内核中使用到的数据结构.此对象(Object)均是由对象头(Object ...
- JavaScript权威设计--事件冒泡,捕获,事件句柄,事件源,事件对象(简要学习笔记十八)
1.事件冒泡与事件捕获 2.事件与事件句柄 3.事件委托:利用事件的冒泡技术.子元素的事件最终会冒泡到父元素直到跟节点.事件监听会分析从子元素冒泡上来的事件. 事件委托的好处: 1.每个函 ...
- JavaScript权威设计--Window对象(简要学习笔记十三)
1.Window对象是所有客户端JavaScript特性和API的主要接入点. Window对象中的一个重要属性是document,它引用Document对象. JavaScript程序可以通过Doc ...
- JavaScript权威设计--JavaScript对象(简要学习笔记八)
1.属性的特性 一个属性包含一个名字和4个特性.4个特性:值,可写性,可枚举性,可配置性 2.对象的三个属性 一:原型属性 要想检测一个对象是否是另一个对象的原型,使用isPrototypeOf( ...
- JavaScript权威设计--JavaScript对象(简要学习笔记七)
1.with语句 语法: width(object){ statement } with语句可用于临时扩展作用域链.作用域链可以按序检索的对象列表,通过它可以进行变量名解析. with将object添 ...
- JSP内置对象之request对象【学习笔记】
request对象是JSP中重要的对象,每个request对象封装着一次用户的请求,并且所有的请求参数都被封装在request对象中,因此request对象是获取请求参数的重要途径. 一.获取请求头与 ...
- <<面向模式的软件架构2-并发和联网对象模式>>读书笔记
服务访问和配置模式 Wrapper Facade可以将有非对象API提供的函数和数据封装到面向对象的类接口中 就是把底层API再封装一次,让外部不用关心是调用哪个平台的API,不如锁,在不同的平台上可 ...
- HTTP脚本化——XMLHttpRequest对象的学习笔记
一. HTTP 请求和响应 一个HTTP请求由4部分组成 HTTP请求方法(也叫动作Verb) 正在请求的URL 一个可选的请求头集合(可能包含身份验证信息等) 一个可选的请求主体 服务器返回的HTT ...
随机推荐
- PAT(乙级)2020年春季考试
比赛链接:https://pintia.cn/market/item/1287964475579875328 7-1 对称日 题解 模拟,注意年月日不足位在前面补零. 代码 #include < ...
- HTTP笔记4--HTTP 状态码
状态码作用.组成 HTTP 状态码负责表示客户端 HTTP 请求的返回结果.标记服务器端的处理是否正常.通知出现的错误等工作.状态码的职责是当客户端向服务器端发送请求时,描述返回的请求结果. 状态码如 ...
- Nginx基础 - 配置代理web服务
1.反向代理及负载均衡Nginx实现负载均衡用到了proxy_pass代理模块核心配置,将客户端请求代理转发至一组upstream虚拟服务池. 1)upstream配置语法 Syntax: upstr ...
- Zabbix 监控网站
官网教学步骤 配置 Web 监控 创建 Web 场景 配置 Web 场景 配置 Web 监控步骤 一共划分为 5 个步骤: 监测访问登录页面 模拟登录功能 # sid 变量的值 regex:name= ...
- universities
- Redis内存管理中的LRU算法
在讨论Redis内存管理中的LRU算法之前,先简单说一下LRU算法: LRU算法:即Least Recently Used,表示最近最少使用页面置换算法.是为虚拟页式存储管理服务的,是根据页面调入内存 ...
- Netty(六)揭开 BootStrap 的神秘面纱
6.1 客户端 BootStrap 6.1.1 Channel 简介 在 Netty 中,Channel 是一个 Socket 的抽象,它为用户提供了关于 Socket 状态(是否是连接还是断开)以及 ...
- Linux Centos7发送QQ邮件
一.关闭本机的sendmail服务或者postfix服务 #sendmial service sendmail stop chkconfig sendmail off #postfix service ...
- Linux 驱动框架---模块参数
Linux 模块的参数 通过在内核模块中定义模块参数从而可以在安装模块时通过insmod module_name paramname=param形式给模块传递参数.如果安装模块是传参数则将使用模块内定 ...
- Web API 设计
Web API 设计 The Design of Web APIs free online ebook https://www.manning.com/books/the-design-of-web- ...