局部对象,static局部对象,static全局对象
来源:互联网 发布:春风沉醉的夜晚知乎 编辑:程序博客网 时间:2024/05/29 16:33
为分清这些,我们先看一段代码:
#include<iostream>static int global_sta = 1; //global_sta为静态全局对象void print(){ int non_local = 2; //non_local为局部对象,非静态的 static sta_local = 3; //sta_local为静态局部对象}
非静态局部对象
特点:
在定义它的函数中可以使用,函数外不可访问
存储位置在栈区
当函数的控制路径经过变量定义语句时创建该对象,当到达定义所在块的末尾时销毁它
static局部对象
特点:
函数内的static对象
存储位置在全局数据区
定义它的函数中可以访问,函数外不可访问
在程序执行路径第一次经过对象定义语句时初始化(就是说多次调用它所在函数,只有第一次经过这个static对象初始化语句时才初始化它,其它时候忽略),如下函数:
size_t count_calls(){ static size_t ctr = 0;//调用结束后,这个值依然有效;第二次调用count_calls函数时 //不会初始化ctr,ctr的值是1 return ++ctr;}
- 不会随着函数结束而消失,整个程序结束才消失
static全局对象
特点:
定义在全局,或namespace范围内,或一个class中,或一个文件作用域中
存储位置在全局数据区
只有该源文件能访问,其他cpp文件不能访问
整个程序结束时消失。
总结
- 定义位置
局部对象,static局部对象定义在函数内,static全局对象定义在函数外 - 存储位置
局部对象存储在栈区,static局部对象和static全局对象存储在全局数据区 - 访问作用域
局部对象和static局部对象只能在函数内被访问;static全局对象能在全局被访问 - 销毁时间
局部对象在函数末尾销毁,static局部对象和static全局对象在程序结束时销毁
.
阅读全文
0 0
- 局部对象,static局部对象,static全局对象
- C++7.5 局部对象、局部变量、static局部变量
- static 类型属性(局部静态对象)
- static、全局、局部
- 全局对象/局部静态对象/new数组
- static 静态局部对象、static类成员、命名冲突与static修饰符
- static 静态局部对象、static类成员、命名冲突与static修饰符
- static 静态局部对象、static类成员、命名冲突与static修饰符
- static的全局对象本质
- 局部对象
- 局部对象
- 局部对象
- 局部对象
- C++之全局对象、局部对象、静态对象详解
- C++之全局对象、局部对象、静态对象详解
- static对象
- OC中全局NSMutableArray对象不能addObject局部对象
- 7-13 new,局部对象,MFC全局对象
- ConstraintLayout入门
- 老人遇骗子上门推销骗局
- linux中如何给每个用户的tomcat配置环境变量
- 小米面试题-----将二叉树打印成多行
- VSCode快捷使用
- 局部对象,static局部对象,static全局对象
- 慎用GsonFormat,小心入坑!
- 永远不要用obj.isEmpty(),
- Android相关知识目录
- ActiveMQ系列—ActiveMQ性能优化(下3)(消息存储方案 RDB)
- 零碎的html和css知识点
- VM中,无法使用X86_64模拟器
- 使用mysqlreplicate命令快速搭建 Mysql 主从复制
- Modular Inverse ZOJ