全局对象和局部对象的标准定义?

lwmao 2003-09-29 01:09:38
全局对象和局部对象的标准定义?它们之间的区别?
...全文
76 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
thb28 2004-02-13
  • 打赏
  • 举报
回复
局部变量或对象,是在栈上开辟的内存建立起来的。
全局变量可以是在常规内存(用常规的声明方式)或在动态堆内存上声明的变量。
局部里面声明的静态变量或对象,利用STATIC关键字声明的,应该是属于全局的变量,不过在所在的{}才能调用使用,但它不是在栈上开辟的。
操作系统书上有讲到,关于栈内存的说法,推荐看看,很有受用。
在{}块内定义的栈对象具有比全局对象更高的优先级别,如果要使用同名的全局对象,要使用::操作符。
  • 打赏
  • 举报
回复
好难哦!
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

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧