社区
C语言
帖子详情
谁能解释一下局部对象、静态对象和全局对象啊?
bluefin
2002-09-20 09:26:19
最好能给个例子,谢谢了。
...全文
498
9
打赏
收藏
谁能解释一下局部对象、静态对象和全局对象啊?
最好能给个例子,谢谢了。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
pora
2002-09-22
打赏
举报
回复
这要从存储,语义和初始化上去讨论:
1.从存储上来说,全局和静态变量都是“全局”。他们占用的内存是不会被释放的。
2.从语义上来说:全局变量的名字是全局可见的,但是静态变量和局部变量的名字不是全局可见的。(这也就是为什么把anonymous namespace scope variable也叫做局部变量的原因,因为虽然他的声明语法使用全局变量的语法,他的名字是局部可见的)
3.从初始化来说,全局变量是:main前初始化,main后析构。静态变量是在scope一级被初始化的,譬如:
void func(void)
{
static SomeClass sc;
}
如果func不被调用到,这个sc虽然占用内存,他的初始化永远不会被调用到。
但是静态变量的析构是全局的。
临时变量的构造和析构都是局部的。
还有,大家注意一点:const是缺省全局的,这很重要!!!!
-------------------------------------------------------
www.AllAboutProgram.com
hypmonkey
2002-09-22
打赏
举报
回复
没事,我看看我几个角了
hypmonkey
2002-09-22
打赏
举报
回复
hey darling
liubear
2002-09-22
打赏
举报
回复
局部对象就是只在局部使用,出了局部环境就不存在了。以{}为其存在区域。
静态对象是对文件而言,文件之外是不可见的。
全局对象则在整个程序都可见。
kjijian
2002-09-20
打赏
举报
回复
局部对象就是只在局部使用比如在函数里,复合语句里,出了局部环境就不存在了。
静态对象分为静态全局对象和静态局部对象
静态局部对象和局部对象的用法类似,但其在退出整个程序时,才消失,不象局部对象出了局部环境就不存在了。
静态全局对象只在其申明的文件内是全局的,其它文件不能访问,其也是退出整个程序时,才消失。
全局对象对整个程序是可见的。其也是退出整个程序时,才消失。
同上:
alexxing
2002-09-20
打赏
举报
回复
对象就是变量
变量有局部、全局、静态,对象也一样
Class extern1;
static Class static1;
void func(Class local1)
{
Class local2;
static Class static2;
extern Class extern2;
}
extern Class extern3;
local1,local2: 局部变量(参数也可以看作局部变量)
static1,static2: 静态变量
extern1,extern2, extern3: 全局变量
================================================================
人生最大的幸福莫过于顿顿有玉米吃
(CSDN 论坛助手,挺好使!俺们拨号上网的有福了)
blue_coco
2002-09-20
打赏
举报
回复
局部对象就是只在局部使用比如在函数里,复合语句里,出了局部环境就不存在了。
静态对象分为静态全局对象和静态局部对象
静态局部对象和局部对象的用法类似,但其在退出整个程序时,才消失,不象局部对象出了局部环境就不存在了。
静态全局对象只在其申明的文件内是全局的,其它文件不能访问,其也是退出整个程序时,才消失。
全局对象对整个程序是可见的。其也是退出整个程序时,才消失。
oyxiaoyu0
2002-09-20
打赏
举报
回复
都看成和变量一样的概念就行了!
step_by_step
2002-09-20
打赏
举报
回复
局部对象的声明期是local的,比如在函数里,复合语句里
静态变量包括局部静态变量和全局静态变量
全局对象是就是全局静态变量
C++---
全局
对象
、
局部
对象
、
静态
对象
静态
全局
对象
和一般的
全局
对象
的区别就是一般的
全局
对象
在程序的其他文件中可以通过关键字extern来调用,而static声明的
全局
变量则只能在本文件中使用,这是链接性一个是外部的,一个是内部的!3、
静态
(static)
对象
,当
对象
生成时其构造函数被执行;4、以new方式产生出来的
局部
对象
,当
对象
生成时其构造函数被执行,析构函数则在
对象
被delete时执行时执行。1、
全局
对象
,程序一开始,其构造函数就先被执行(比程序进入点更早);2、
局部
对象
,当
对象
生成时,其构造函数被执行;第三种方法是产生一个
全局
对象
。...
局部
对象
和
全局
对象
在c++环境下讨论
局部
对象
和
全局
对象
局部
对象
全局
对象
代码展示
局部
对象
在语块句中定义的
对象
称为
局部
对象
,包括函数的形参。
局部
对象
仅在相应的语句块内部可见,而且还会屏蔽外层作用域中的同名
对象
。 1、自动
对象
自动
对象
的生命期开始于定义语句的执行,结束于作用域的结尾处。 函数形参是自动
对象
,进入函数时被分配存储空间,函数执行结束时消亡。 对于未初始化的
局部
对象
,值为随机值。 2、
局部
静态
对象
一个函...
C++之
全局
对象
,
局部
对象
,
静态
局部
对象
先说两个概念:作用域(scope) 和生命周期(lifetime) 作用域: 名字的作用域指的是知道该名字的程序文本区域 生命周期:
对象
的生命周期指在程序执行过程中
对象
存在的时间
全局
对象
, 顾名思义是
全局
的
对象
,其作用域是整个程序文本,其
对象
的声明周期是整个程序的执行过程;
局部
对象
: 一般说的
局部
变量都指的是动态
局部
变量,包括形参,某个语句块中定义的变量等。 动态
局部
变量是自
C++
全局
对象
,
静态
局部
对象
,自动
局部
对象
构造析构顺序
全局
对象
构造在main函数执行之前,
局部
静态
对象
构造在执行函数体之前;
局部
静态
对象
析构早于
全局
对象
,都在main函数之后。 #include<stdio.h> class A { int a; public: A(int i) {a = i; printf("A() %d\n", a);} ~A() {printf("~A() %d\n", a);} }; void Get() { printf("Get() enter\n"); static
静态
对象
(
全局
+
局部
+
静态
对象
成员)
所有的
静态
对象
、
全局
对象
都于
静态
存储区分配。关于
全局
对象
,是在main()函数执行前就分配好了的。其实,在main()函数中的显示代码执行之前,会调用一个由编译器生成的_main()函数,而_main()函数会进行所有
全局
对象
的的构造及初始化工作。而在main()函数结束之前,会调用由编译器生成的exit函数,来释放所有的
全局
对象
。比如下面的代码: void main(void) ...
C语言
69,371
社区成员
243,080
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章