社区
C++ 语言
帖子详情
全局对象和局部对象的标准定义?
lwmao
2003-09-29 01:09:38
全局对象和局部对象的标准定义?它们之间的区别?
...全文
86
19
打赏
收藏
全局对象和局部对象的标准定义?
全局对象和局部对象的标准定义?它们之间的区别?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
19 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
thb28
2004-02-13
打赏
举报
回复
局部变量或对象,是在栈上开辟的内存建立起来的。
全局变量可以是在常规内存(用常规的声明方式)或在动态堆内存上声明的变量。
局部里面声明的静态变量或对象,利用STATIC关键字声明的,应该是属于全局的变量,不过在所在的{}才能调用使用,但它不是在栈上开辟的。
操作系统书上有讲到,关于栈内存的说法,推荐看看,很有受用。
在{}块内定义的栈对象具有比全局对象更高的优先级别,如果要使用同名的全局对象,要使用::操作符。
极地语音工作室
2004-02-13
打赏
举报
回复
好难哦!
code8238
2004-02-12
打赏
举报
回复
全局变量被存放在堆里,局部变量被存放在栈里
C723
2004-02-12
打赏
举报
回复
生命期不同
C723
2004-02-12
打赏
举报
回复
作用域不同
laomai
2004-02-12
打赏
举报
回复
哦,我看差了,以为是构造函数呢,呵呵
wangyangcheng
2004-02-12
打赏
举报
回复
#include <iostream>
using namespace std;
class C
{
public:
C()
{
cout << "Invoke Constructor....." << endl;
};
~C()
{
cout << "Invoke Destructor......." << endl;
//在Dev-cpp 2.9.8.0下面可看到此行執行﹐在VC++6.0(無patch)下面看不到﹗
}
};
C c;
int main()
{
system("pause");
return 0;
}
laomai
2004-02-12
打赏
举报
回复
wangyangcheng(矛盾) ,你用的是什么编译器啊?
VC6下是可以看到的它的执行啊
一路奔跑
2004-02-12
打赏
举报
回复
class C
{
public:
C()
{
cout << "Invoke Constructor....." << endl;
};
~C()
{
cout << "Invoke Destructor......." << endl;
}
};
C c; //他的构造应该是在编译器内部的吧???
//偶也是菜鸟,不知道是不是这样~
int main()
{
return 0;
}
wangyangcheng
2004-02-12
打赏
举报
回复
我想問一global對象的構造與析構的問題﹕
class C
{
public:
C()
{
cout << "Invoke Constructor....." << endl;
};
~C()
{
cout << "Invoke Destructor......." << endl;
}
};
C c;
int main()
{
return 0;
}
為何沒有看到dtor的執行?
除非顯示調用~C()才會看到dtor的輸出﹐Why?
Wolf0403
2003-10-09
打赏
举报
回复
全局对象在 main 之前被构造,所以,可以通过定义一个全局类对象来在 main 之前执行特定代码
Oghma
2003-10-09
打赏
举报
回复
存储区域与创建时间不同
全局对象与非局部静态变量(比如类里的)在main()之前创建,创建于global中
局部对象与局部静态变量(函数里的)在函数第一次调用的时候创建,前者创建于stack中,后者在global中
new对象创建于heap中
mmdou
2003-10-03
打赏
举报
回复
两个存储的区域不同啊,
robbie24
2003-09-29
打赏
举报
回复
编译器在寻找名字声明的时候,都是从扩号内由内向外寻找的,
先是函数体内...然后是类域...最后是全局域...这个就是为什么局部变量能够是全局同名变量被hide的原因了.
BinaryWorld
2003-09-29
打赏
举报
回复
局部变量或对象,是在栈上开辟的内存建立起来的。
全局变量可以是在常规内存(用常规的声明方式)或在动态堆内存上声明的变量。
局部里面声明的静态变量或对象,利用STATIC关键字声明的,应该是属于全局的变量,不过在所在的{}才能调用使用,但它不是在栈上开辟的。
操作系统书上有讲到,关于栈内存的说法,推荐看看,很有受用。
在{}块内定义的栈对象具有比全局对象更高的优先级别,如果要使用同名的全局对象,要使用::操作符。
不知道我说的对不对?呵呵,啊拉也是菜鸟。
blh
2003-09-29
打赏
举报
回复
全局和局部只是一个相对的概念,只不过是作用域的不同
同时局部比全局有高的优先级
应该是在{}内部定义的对象叫做局部对象
在{}外定义的是全局对象(一般说明中的全局对象指的是文件中的全局)
Wolf0403
2003-09-29
打赏
举报
回复
全局变量不包含类成员变量,呵呵。
ezhou
2003-09-29
打赏
举报
回复
简而言之,函数体内申明的变量是局部变量,函数体外申明的是全局变量。
liao2001
2003-09-29
打赏
举报
回复
hehe
局部
对象
和
全局
对象
在c++环境下讨论
局部
对象
和
全局
对象
局部
对象
全局
对象
代码展示
局部
对象
在语块句中
定义
的
对象
称为
局部
对象
,包括函数的形参。
局部
对象
仅在相应的语句块内部可见,而且还会屏蔽外层作用域中的同名
对象
。 1、自动
对象
自动
对象
的生命期开始于
定义
语句的执行,结束于作用域的结尾处。 函数形参是自动
对象
,进入函数时被分配存储空间,函数执行结束时消亡。 对于未初始化的
局部
对象
,值为随机值。 2、
局部
静态
对象
一个函...
C++之
全局
对象
,
局部
对象
,静态
局部
对象
先说两个概念:作用域(scope) 和生命周期(lifetime) 作用域: 名字的作用域指的是知道该名字的程序文本区域 生命周期:
对象
的生命周期指在程序执行过程中
对象
存在的时间
全局
对象
, 顾名思义是
全局
的
对象
,其作用域是整个程序文本,其
对象
的声明周期是整个程序的执行过程;
局部
对象
: 一般说的
局部
变量都指的是动态
局部
变量,包括形参,某个语句块中
定义
的变量等。 动态
局部
变量是自
C++---
全局
对象
、
局部
对象
、静态
对象
静态
全局
对象
和一般的
全局
对象
的区别就是一般的
全局
对象
在程序的其他文件中可以通过关键字extern来调用,而static声明的
全局
变量则只能在本文件中使用,这是链接性一个是外部的,一个是内部的!3、静态(static)
对象
,当
对象
生成时其构造函数被执行;4、以new方式产生出来的
局部
对象
,当
对象
生成时其构造函数被执行,析构函数则在
对象
被delete时执行时执行。1、
全局
对象
,程序一开始,其构造函数就先被执行(比程序进入点更早);2、
局部
对象
,当
对象
生成时,其构造函数被执行;第三种方法是产生一个
全局
对象
。...
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
C++之
局部
对象
,
全局
对象
,静态
对象
我们常常对于C++当中的
局部
对象
和
全局
对象
的初始化结果不太熟悉,而且还有一个静态
对象
是什么鬼?下面举例说明 #include<iostream> #include<vector> #include <string> using namespace std; class Dog{ public: int num; string name; }; ...
C++ 语言
64,684
社区成员
250,491
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章